【问题标题】:Using SQL Minus Operator in python在 python 中使用 SQL 减号运算符
【发布时间】:2020-10-12 19:26:32
【问题描述】:

我想对两个表执行如下代码的减号操作。

SELECT
    column_list_1
FROM
    T1
MINUS 
SELECT
    column_list_2
FROM
    T2;

这是在迁移发生之后。我有这两个数据库,我是这样连接的:

import cx_Oracle
import pandas as pd
import pypyodbc
source = cx_Oracle.connect(user, password, name)
df = pd.read_sql(""" SELECT * from some_table """, source)

target = pypyodbc.connect(blah, blah, db) 
df_2 = pd.read_sql(""" SELECT * from some_table """, target) 

如何使用查询在 python 中对源数据库和目标数据库运行减号操作?

【问题讨论】:

    标签: python sql oracle


    【解决方案1】:

    任选其一:

    1. 使用 Python 在两个结果集之间执行“手动”减号操作。
    2. 通过 dblink 使用 Oracle。在这种情况下,您无需从 Python 打开两个连接。

    【讨论】:

      【解决方案2】:

      如果你有一个数据库链接,那么你可以做一个 MINUS 或者你可以使用 Pandas 的合并。

      df = pd.read_sql(""" SELECT * from some_table """, source)
      df_2 = pd.read_sql(""" SELECT * from some_table """, target) 
      
      
      df_combine = df.merge(df2.drop_duplicates(),how='right', indicator=True)
      print(df3)
      

      将在 df_combine 中创建一个新列 _merge,其中将包含值(数据框中的行)和 right_only(数据框 df 中的行)。

      以同样的方式你可以加入左合并。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 2021-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多