如何在PyMySQL中正确创建SQL表?解决1064语法错误
解决PyMySQL创建表时的SQL语法错误(错误码1064)
你的代码存在两处核心SQL语法错误,直接导致了1064报错,同时还有一处事务提交的隐性问题,以下是具体分析和修正方案:
错误点拆解
- 表名标识错误:MySQL中
user是保留关键字,若要作为表名使用,需用**反引号(`)**包裹,而非单引号(')——单引号仅用于包裹字符串值,不能用来标识表/列名。 - SQL语句结构错误:
CREATE TABLE语句末尾,PRIMARY KEY(id)后多写了一个分号,且缺失了闭合表定义的右括号,导致语法结构断裂。 - 事务未提交:PyMySQL默认关闭自动提交,仅执行
cursor.execute()不会将建表操作同步到数据库,必须手动提交事务。
修正后的完整代码
import pymysql.cursors from config import host, user, password, db_name try: connection = pymysql.connect( host=host, port=3306, user=user, password=password, database=db_name, cursorclass=pymysql.cursors.DictCursor ) try: with connection.cursor() as cursor: # 修正语法错误后的建表语句 create_table_query = """ CREATE TABLE `user`( id int AUTO_INCREMENT, name varchar(32), password varchar(32), PRIMARY KEY(id) ) """ cursor.execute(create_table_query) # 提交事务,确保表被实际创建 connection.commit() print("表创建成功") finally: connection.close() print("操作完成") except Exception as ex: print("连接/执行出错") print(ex)
关键修正说明
- 将表名
'user'替换为\user``,规避关键字冲突。 - 调整
CREATE TABLE语句的括号与分号,确保语法结构完整。 - 添加
connection.commit(),将建表操作提交至数据库,避免操作仅停留在内存中。
内容的提问来源于stack exchange,提问作者user22736552
相关产品推荐
相关产品推荐

