需求:老數(shù)據(jù)庫表test部分字段拆分為多個字段插入到新數(shù)據(jù)庫表test_new乖坠,需要比對拆分是是否有數(shù)據(jù)丟失
實現(xiàn):
一、Python連接數(shù)據(jù)庫工具MySQLdb
1刀闷、安裝MySQLdb
pip install MySQL-python
備注:如果Python版本為Python 3熊泵,使用如下安裝方式
pip3 install MySQL client
2、連接數(shù)據(jù)庫
引入模塊
import MySQLdb
連接
db = MySQLdb.connect("host_name", "user_name", "password", "database_name", charset='utf8' )
3甸昏、查詢操作前顽分,先獲取游標
cur = db.cursor()
4、通過游標執(zhí)行SQL語句
sql_select_test = "SELECT * FROM test"
cursor.execute(sql_select_test)
test_app_results = cursor.fetchall()
#遍歷數(shù)據(jù)
for test_info in test_app_results:
test_info_params_1 = test_info[1]
5施蜜、若是插入數(shù)據(jù)卒蘸,必須執(zhí)行commit
db.commit()
6、數(shù)據(jù)庫操作完成后翻默,關閉連接
cursor.close()
db.close()
二缸沃、遷移數(shù)據(jù)對比
1、老表字段value值修改
(1)通過其他字段確定新表中對應老表的具體數(shù)據(jù)修械;
(2)除已修改字段外趾牧,其他字段應該完全保持一致;
(3)該字段若為唯一不可重復字段(主鍵)肯污,查詢整張表中或者在遷移過程中是否有重復數(shù)據(jù)武氓;
2、新表中新增字段
(1)新增字段是否有默認值仇箱;
例子:參數(shù)默認值為0县恕,但數(shù)據(jù)庫中存入了空字符
(2)新增字段類型是否正確:int、string剂桥、float
例子:參數(shù)類型為varchar(128)忠烛,限制了總字數(shù),但需求中字符串字數(shù)并未做限制