PostgreSQL الاستعلام عن قواعد بيانات مختلفة لها نفس الجداول المسماة
-
21-09-2019 - |
سؤال
تحياتي ، باستخدام مكتبة PsyCopg2 في Python ، يمكنني الاتصال حاليًا بـ 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
.
نصائح أخرى
ليس خبير بيثون ، ولكن هل هناك أي سبب لا يمكنك فعله:
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