A庫中a表字段:
A庫a表
原名稱序號
提交時間
微信OpenID
飲食方案評價
運動方案評價
管理師評價
現在名稱 id inputTime wxOpenId eatProgram motionProgram mTEvaluation注:a 表提交時間格式爲:時間戳:需要轉換爲時間格式
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 】')
實現結果