1

こんにちは、Python の psycopg2 ライブラリを使用して、現在 DB に接続し、次のように取得できます。

conn = psycopg2.connect("dbname='db1' user='postgres' host='xxxxxx' password='mypass'");
qr = conn.cursor()
qr.execute("SELECT avg(pavg) FROM mytable WHERE id =5")

「db1」という名前のデータベースの横に、同じテーブルを含む別のIPから別のデータベースにクエリを実行し、クエリを追加する必要があります。

conn1 = psycopg2.connect("dbname='mydb' user='postgres' host='xxxxxx' password='mypass'");

conn2 = psycopg2.connect("dbname='mydb' user='postgres' host='yyyyyy' password='mypass'");

qr1 = conn1.cursor()
qr1.execute("SELECT avg(pavg) FROM mytable WHERE id =5")

qr2 = conn1.cursor()
qr2.execute("SELECT avg(pavg) FROM mytable WHERE id =5")

どうすればこれを達成できますか?

4

2 に答える 2

2

怪しげなデザインに思えます。とにかく、IIRCcursor.fetchall()はリストを返すので、できますrows = qr.fetchall() + qr2.fetchall()

重複を自分で処理する必要があります。異なるスキーマを使用していた場合は、SELECT ... FROM schema1.foo ... UNION SELECT ... FROM schema2.foo.

于 2009-12-23T10:12:25.610 に答える
1

Pythonの専門家ではありませんが、できない理由はありますか:

conn2 = psycopg2.connect("dbname='db1' user='postgres' host='yyyyyy' password='mypass'");
qr2 = conn2.cursor()
qr2.execute("SELECT avg(pavg) FROM mytable WHERE id =5")

次に、qr qnd qr2 オブジェクトの結果をフェッチします。

rows = qr .fetchall()
for row in rows:
   do you have to do ....
and then 
rows = qr2 .fetchall()
for row in rows:
   do you have to do ....
于 2009-12-23T09:55:42.973 に答える