MySQL 批量設置主鍵id自增腳本


SQL server遷移MySQL后自增設置並未遷移至MySQL
批量設置腳本

import pymysql


def dictfetchall(cursor):
    # 獲取游標描述
    desc = cursor.description
    return [
        dict(zip([col[0] for col in desc], row))
        for row in cursor.fetchall()
    ]


db = pymysql.connect(host=host, user=user, password=password, database=database)
cursor = db.cursor()
cursor.execute("SHOW TABLES")
data = cursor.fetchall()
tables_list = (i[0] for i in data)
e = []
for i in tables_list:
    try:
        print(i)
        cursor.execute(f"alter table {i} change id id bigint AUTO_INCREMENT;")
    except:
        e.append(i)
print('==========錯誤列表==========')
print(e)
print('==========嘗試補救==========')
e2 = []
for i in e:
    cursor.execute(f"desc {i}")
    data = dictfetchall(cursor)
    Field = [l['Field'] for l in data]
    try:
        print(i)
        for l in ['id', 'Id', 'ID']:
            if l in Field:
                cursor.execute(f"ALTER TABLE {i} change {l} {l} int")
                cursor.execute(f"ALTER TABLE {i} ADD PRIMARY KEY({l});")
                cursor.execute(f"alter table {i} change {l} {l} bigint AUTO_INCREMENT;")
        else:
            e2.append(i)
    except Exception as e:
        print(e)
        e2.append(i)
print("========設置失敗列表========")
print(e2)
db.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM