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)
留言列表