You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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)

关键修正说明

  1. 将表名'user'替换为\user``,规避关键字冲突。
  2. 调整CREATE TABLE语句的括号与分号,确保语法结构完整。
  3. 添加connection.commit(),将建表操作提交至数据库,避免操作仅停留在内存中。

内容的提问来源于stack exchange,提问作者user22736552

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:43:22