準備對某個資料庫重要的資料字典表進行變更監控。首先需要更具傳入的來源表 進行目标表的自動建立和表資料的同步。
由于代碼在内網編寫 無法拷出 這裡給出核心代碼:
查詢建立表結構
import pymql
#查詢所需同步的表的建立語句
create_sql = show create table tablename
#連接配接需要建立表的資料庫 執行建立表語句 生成相同表結構的表
excute(create_sql)
自動同步表資料
#查詢舊表或者新表的schema資訊 擷取表的列數
q_res = select count(*)from information_schema.COLUMNS where table_name =tablename
##生成對應列數的一行插入sql語句
str_str = '%s,'*(int(q_res[0][0]-1))+'%s'
insertsql = (insert into table_name values %s) %str_str
##生成來自舊表的需要同步的所有資料的fetchall結果
insert_data = select * form table_name
##調用pymysq的excutemany()方法 傳入sql和data參數
excutemany(insertsql,insert_data)
此外 還可通過對表schema資訊和表資料的比對來檢視是否對舊資料表進行了修改 達到監控表資料的目的
這裡可以采用集合對象來進行資料比對,非常友善和快捷
對應pymysql查詢傳回的fetchall()資料 可直接使用
set(search_result) #進行集合對象的轉換
使用
(set_a | set_b) - (set_a&set_b)
來擷取兩表的不同資料的行資料的集合
也可查詢schemainformation中的表的中繼資料資訊來比對結構是否轉變