所以我目前正在寻求解决以下问题:
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,但我愿意看看其他开源工具。
答案 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)