问候,通过使用python的psycopg2库,我现在可以连接到数据库并检索如下:
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")
我怎样才能做到这一点?
答案 0 :(得分:2)
听起来像一个可疑的设计。无论如何,IIRC,cursor.fetchall()
会返回一个列表,因此您可以rows = qr.fetchall() + qr2.fetchall()
。
你必须自己处理重复。如果您使用的是不同的schemas,则可以SELECT ... FROM schema1.foo ... UNION SELECT ... FROM schema2.foo
。
答案 1 :(得分: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 ....