2009-12-23 80 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

相关问题