43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
|
|
"""列出两库全部时间列的类型,并做差异比对(只读)"""
|
||
|
|
import pymysql
|
||
|
|
|
||
|
|
SQL = """
|
||
|
|
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE,
|
||
|
|
IFNULL(CAST(COLUMN_DEFAULT AS CHAR),'<NULL>')
|
||
|
|
FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA=%s AND DATA_TYPE IN ('timestamp','datetime')
|
||
|
|
ORDER BY TABLE_NAME, ORDINAL_POSITION
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
def snap(db):
|
||
|
|
c = pymysql.connect(host="10.8.0.252", user="root", password="Hbhyg731024@", database=db)
|
||
|
|
cur = c.cursor()
|
||
|
|
cur.execute(SQL, (db,))
|
||
|
|
rows = {(r[0], r[1]): (r[2], r[3], r[4]) for r in cur.fetchall()}
|
||
|
|
c.close()
|
||
|
|
return rows
|
||
|
|
|
||
|
|
|
||
|
|
dev, prd = snap("pms_dev"), snap("pms")
|
||
|
|
keys = sorted(set(dev) | set(prd))
|
||
|
|
print("%-30s %-20s %-34s %-34s %s" % ("table.column", "", "pms_dev", "pms", "一致"))
|
||
|
|
diff = 0
|
||
|
|
for k in keys:
|
||
|
|
d, p = dev.get(k, ("<missing>",) * 3), prd.get(k, ("<missing>",) * 3)
|
||
|
|
same = d == p
|
||
|
|
if not same:
|
||
|
|
diff += 1
|
||
|
|
print("%-30s %-20s %-34s %-34s %s" % (f"{k[0]}.{k[1]}", "", str(d), str(p), "OK" if same else "*** DIFF ***"))
|
||
|
|
print()
|
||
|
|
print("时间列总数:", len(keys), " 不一致:", diff)
|
||
|
|
print()
|
||
|
|
print("pms_dev 中仍是 TIMESTAMP 的列:")
|
||
|
|
for k in keys:
|
||
|
|
if dev.get(k, ("",))[0] == "timestamp":
|
||
|
|
print(" ", f"{k[0]}.{k[1]}", dev[k])
|
||
|
|
print("pms(生产) 中仍是 TIMESTAMP 的列:")
|
||
|
|
for k in keys:
|
||
|
|
if prd.get(k, ("",))[0] == "timestamp":
|
||
|
|
print(" ", f"{k[0]}.{k[1]}", prd[k])
|