两个不同的数据库连接同时Python

时间:2018-06-14 18:03:04

标签: python sql oracle

所以我目前正在寻求解决以下问题:

import cx_Oracle
import pandas as pd
import pypyodbc
connection = cx_Oracle.connect(user, password, name)
df = pd.read_sql(""" SELECT ID FROM TABLE WHERE DATE = '13JUN2018' """, connection)

connection_2 = pypyodbc.connect(blah, blah, db) 
df_2 = pd.read_sql(""" SELECT ID_2 FROM VW_TABLE WHERE DATE = '2018-06-13' """, connection_2) 

我希望能够比较这两个结果并确定df中的值,而不是df_2中的值。现在我明白这可以通过说:

来完成
""" SELECT ID_2 FROM VW_TABLE WHERE DATE ='2018-06-13' AND ID_2 NOT IN ID"""

我们将ID作为列表传递。我宁愿在一个语句中使用EXCEPT语句执行此操作,因此我不必将df存储在内存中。

有没有人做过这样的事情,你一次打两个数据库。我偏爱Python,但我愿意看看其他开源工具。

1 个答案:

答案 0 :(得分:0)

您可以使用列表来完成。获取第一个ID列表:

cur1 = connection.cursor()
cur2 = connection2.cursor()

cur1.execute("""SELECT ID FROM TABLE WHERE DATE = '13JUN2018' """)

List_ID = [ id[0] for ID in cur1.fetchall() ]

cur2.execute("""SELECT ID_2 FROM VW_TABLE WHERE DATE = '2018-06-13'""")

List_ID_2 = [ id[0] for ID in cur2.fetchall() ]

# This will subtract values of ID_2 list from ID List 
df1_not_2 = set(List_ID) - set(List_ID_2)