PostgreSQL الاستعلام عن قواعد بيانات مختلفة لها نفس الجداول المسماة

StackOverflow https://stackoverflow.com/questions/1951723

  •  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 ....
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top