2009-12-23 78 views
0

問候,通過使用python的psycopg2庫兩個不同的數據庫,我目前可以連接到一個數據庫和檢索等這樣的:PostgreSQL的查詢,其爲具有相同的命名錶

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") 

我怎樣才能做到這一點?

回答

2

聽起來像一個可疑的設計。無論如何,IIRC,cursor.fetchall()返回一個列表,所以你可以做rows = qr.fetchall() + qr2.fetchall()

你必須自己處理重複。如果你使用不同的schemas,你可以做SELECT ... FROM schema1.foo ... UNION SELECT ... FROM schema2.foo

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 .... 
+0

確實不是,但我需要諸如:rows = qr .fetchall()PLUS qr2 .fetchall() – Hellnar 2009-12-23 09:58:10

相關問題