Hi 今天要來分享 如何使用 Python 來進行 Mysql資料比對

假設有兩個資料庫 A 跟 B,想要利用python 確認兩者是否資料同步

 

下列為範例程式碼來準備為各位解說:

import pandas as pd
from sqlalchemy import create_engine

engine_A = create_engine('mysql+pymysql://'+sql_user+':'+sql_passwd+'@'+sql_ip+':'+sql_port+'/database_name')

engine_B = create_engine('mysql+pymysql://'+sql_user+':'+sql_passwd+'@'+sql_ip+':'+sql_port+'/database_name')

sql="select * from example"

df_A = pd.read_sql_query(sql, engine_A)

df_B = pd.read_sql_query(sql, engine_B)

df_merge=df_A.merge(maria_df, indicator = True, how='outer').loc[lambda x : x['_merge']!='both']

 

首先

import pandas as pd
from sqlalchemy import create_engine

是載入模組,如果沒有的朋友記得下載。

 

sql="select * from example"

是sql指令,我預期從 example 這個 table 抓所有資料出來看

 

engine = create_engine('mysql+pymysql://'+sql_user+':'+sql_passwd+'@'+sql_ip+':'+sql_port+'/database_name')

是產生一個連結

sql_user: 是 資料庫的 user name

sql_passwd: 是 資料庫的 passwd

sql_ip: 是資料庫的ip,如果在local端 建議可以設 127.0.0.1

sql_port: 資料庫的port,通常為 3306

database_name: DB 名

 

df_A = pd.read_sql_query(sql, engine)

df_B = pd.read_sql_query(sql, engine)

則是使用engine,去執行sql指令

 

df_merge=df_A.merge(maria_df, indicator = True, how='outer').loc[lambda x : x['_merge']!='both']

這裡將 df_A 與 df_B 放置入 df_merge 這個 dataframe內

indocator為True時候,會多產生 _merge欄位。

_merge欄位會顯示三種可能: left_only 、right_only 、both。

how=outer : 會保留兩個dataframe 的所有訊息。

所以這裡的結果,就是會把所有兩個資料庫獨有的資料抓出來。

 

所有最後 df_merge 這個dataframe 就會有兩個資料庫相異的資料。(right_only 與 left_only) 

 

 

arrow
arrow

    乂人夫阿豪乂 發表在 痞客邦 留言(0) 人氣()