python 實現多表組合

A庫中a表字段:

A庫a表

原名稱

序號

提交時間

微信OpenID

飲食方案評價

運動方案評價

管理師評價

現在名稱 id inputTime wxOpenId eatProgram motionProgram mTEvaluation

注:a 表提交時間格式爲:時間戳:需要轉換爲時間格式

B庫中b表字段:

B庫b表
原名稱

微信openID

微信unionID

userID

總打卡率

總飲食打卡率

總運動打卡率

現在名稱 wxOpenId wxUnionID userId punchRate eatPunchRate motionRate

基於openID 進行a、b 表關聯,整合後的c表字段:

原名稱

提交日期

微信OpenID

userID

飲食方案評價

運動方案評價

管理師評價

總打卡率

總飲食打卡率

總運動打卡率

現在名稱 inputTime wxOpenId userId eatProgram motionProgram mTEvaluation punchRate eatPunchRate motionRate

 注意事項:
1、數據遷移當中需要規範字段名稱,統一使用英文字段,降低因編碼格式出現BUG的機率
2、數據需要針對數據類型,提前進行數據類型規範;對於多數據源彙總,需要提前敲定數據類型
3、確定關聯主鍵(唯一標識),考慮因爲關聯產生的一對多問題,空值問題,異常值問題

 

# -*- coding: utf-8 -*-

# 導入必要模塊
import pandas as pd
from sqlalchemy import create_engine

# 初始化數據庫連接,使用pymysql模塊
# MySQL的用戶:***, 密碼:****, 端口:3306,數據庫:****
engineA = create_engine('mysql+pymysql://cyt123:[email protected]:3306/dateName')

# 查詢語句,選出 wx_A 表中的所有數據
wx_a_sql = '''
      select id,inputTime,wxOpenId,eatProgram,motionProgram,mTEvaluation from wx_A;
      '''

# read_sql_query的兩個參數: sql語句, 數據庫連接
df = pd.read_sql_query(wx_a_sql, engineA)

# 輸出wx_A表的查詢結果
print('Read from and write to Mysql table successfully! 【wx_A】')
print(df)

# 查詢語句,選出 other_B 表中的所有數據
wx_other_sql = '''
      select wxOpenId,wxUnionID,userId,punchRate,eatPunchRate,motionRate from other_B;
      '''

# read_sql_query的兩個參數: sql語句, 數據庫連接
dfb = pd.read_sql_query(wx_other_sql, engineA)

# 輸出 other_B 表的查詢結果
print('Read from and write to Mysql table successfully! 【other_B】')
print(dfb)

print(pd.merge(left=df, right=dfb, how='left', left_on='wxOpenId', right_on='wxOpenId'))
print('Read from and write to Mysql table successfully! 【wx_A left join other_B on wxOpenId 】')

 實現結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章