Python操作数据库重命名指定表列名报1064语法错误如何解决
问题诱因
SP_RENAME是SQL Server的内置系统存储过程,EXEC也是SQL Server调用存储过程的专属语法,你当前使用的是MariaDB数据库,完全不支持这套语法,所以直接抛出1064 SQL语法错误。跨数据库的DDL语句不能直接混用,必须匹配当前数据库的语法规范。
修改方案
MariaDB/MySQL重命名列需要使用ALTER TABLE语句,分两种兼容场景:
- 如果你用的是MariaDB 10.5.2及以上、MySQL 8.0及以上版本,直接用
RENAME COLUMN语法即可,不需要重复填写列的类型、约束属性:ALTER TABLE test_table RENAME COLUMN `Name` TO `First_Name`; - 如果是更低版本,需要用
CHANGE语法,必须完整填写新列的类型、约束属性,和原列定义保持一致即可:-- 示例:假设原Name列类型为varchar(20)非空 ALTER TABLE test_table CHANGE `Name` `First_Name` varchar(20) NOT NULL;
修改后的可运行Python代码如下:
def ModifeingColumnName(): try: myconn = mysql.connector.connect(host ="localhost", user = "root", password = "", database = "test") mycurs = myconn.cursor() # 替换为匹配你数据库版本的ALTER语句 mycurs.execute('''ALTER TABLE test_table RENAME COLUMN `Name` TO `First_Name`''') myconn.commit() print('changed successfully!') # 操作完成后主动释放连接资源 mycurs.close() myconn.close() except Exception as e: # 打印具体异常信息,不要直接吞异常方便排查问题 print(f'failed! 错误详情:{e}')
额外注意:执行该操作的数据库账号需要拥有目标表的ALTER权限,否则会报权限不足错误。
内容的提问来源于stack exchange,提问作者user18314494
相关产品推荐
相关产品推荐

