PostgreSQL的查询,其为具有相同的命名表中两个不同的数据库
-
21-09-2019 - |
题
问候,通过使用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")
我怎样才能做到这一点?
解决方案
听起来像是一个可疑的设计。无论如何,IIRC,cursor.fetchall()
返回一个列表,这样你就可以做rows = qr.fetchall() + qr2.fetchall()
。
您将不得不自己处理重复。如果您正在使用不同的模式你可以做SELECT ... FROM schema1.foo ... UNION SELECT ... FROM schema2.foo
。
其他提示
不是一个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 ....
不隶属于 StackOverflow