import pymysql
# 数据库连接配置(需修改!)
db_config = {
'host': '127.0.0.1',
'port': 20632,
'user': 'root',
'password': 'root',
'database': 'pes-xa',
'charset': 'utf8mb4'
}
def modify_table_structure(table_name):
"""
修改指定表的结构
:param table_name: 要修改的表名
"""
try:
# 建立数据库连接
connection = pymysql.connect(**db_config)
print(f"成功连接到数据库:{db_config['database']}")
with connection.cursor() as cursor:
# 1. 修改 create_user 字段为 create_by
sql1 = f"""
ALTER TABLE `{table_name}`
CHANGE COLUMN `create_user` `create_by`
varchar(255) COLLATE utf8mb4_bin DEFAULT NULL
COMMENT '创建人';
"""
cursor.execute(sql1)
print(f"已执行 SQL1:修改 {table_name} 的 create_user 字段")
# 2. 修改 update_user 字段为 update_by
sql2 = f"""
ALTER TABLE `{table_name}`
CHANGE COLUMN `update_user` `update_by`
varchar(255) COLLATE utf8mb4_bin DEFAULT NULL
COMMENT '更新人';
"""
cursor.execute(sql2)
print(f"已执行 SQL2:修改 {table_name} 的 update_user 字段")
# 3. 删除 create_dept 字段
sql3 = f"""
ALTER TABLE `{table_name}`
DROP COLUMN `create_dept`;
"""
cursor.execute(sql3)
print(f"已执行 SQL3:删除 {table_name} 的 create_dept 字段")
# 提交事务
connection.commit()
print(f"表 {table_name} 修改成功!")
except pymysql.Error as e:
print(f"处理表 {table_name} 时数据库错误:{e}")
connection.rollback()
finally:
if connection:
connection.close()
print(f"表 {table_name} 处理完成,数据库连接已关闭")
def get_tables_with_prefix(prefix):
"""
获取数据库中以指定前缀开头的所有表名
:param prefix: 表名前缀
:return: 符合条件的表名列表
"""
try:
connection = pymysql.connect(**db_config)
with connection.cursor() as cursor:
# 查询以指定前缀开头的表名
sql = f"SHOW TABLES LIKE '{prefix}%'"
cursor.execute(sql)
tables = cursor.fetchall()
return [table[0] for table in tables]
except pymysql.Error as e:
print(f"获取表名时数据库错误:{e}")
return []
finally:
if connection:
connection.close()
def main():
"""
主函数:获取以指定前缀开头的表名并执行修改
"""
print("=== 表结构批量修改工具 ===")
prefix = input("请输入要修改的表名前缀(例如:t_):")
tables = get_tables_with_prefix(prefix)
if not tables:
print(f"未找到以 {prefix} 开头的表。")
else:
for table in tables:
modify_table_structure(table)
if __name__ == "__main__":
main()
05-26
920

04-02
2763

01-02
1074

03-15
2494
