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

Python向MySQL插入变量遇SQL语法错误(1064)求助

解决MySQL插入操作中的语法错误问题

看起来你遇到的是MySQL Connector/Python参数绑定的常见问题,我帮你分析下错误原因并给出修正方案:

首先,错误提示里的near '%d)'已经点明了核心问题:你的SQL占位符用错了。再加上一个容易忽略的元组格式问题,导致了这次语法错误。

关键修正点:

  • 统一使用%s作为参数占位符
    MySQL Connector/Python不管你要插入的变量是整数、字符串还是其他类型,都要求用%s作为参数占位符。它会自动根据变量的实际类型完成类型转换,不需要你手动指定%d这类格式符。你原来用的%d会被MySQL当成SQL语法的一部分,自然触发语法错误。

  • 确保单个元素的参数是元组类型
    当你只传递一个参数时,(batt)在Python中并不是元组,只是被括号包裹的变量。而cursor.execute()的第二个参数必须是序列(元组或列表),所以需要改成(batt,)(注意末尾的逗号),这样Python才会把它识别为元组。

修正后的完整代码:

import mysql.connector
from mysql.connector import Error

try:
    connection = mysql.connector.connect(host='localhost', database='Xiaomi_Temp', user='user', password='pass')
    cursor = connection.cursor()
    # 修正占位符为%s
    mySql_insert_query = """ INSERT INTO Temp_test (batt) VALUES (%s) """
    # 单个元素元组添加逗号
    recordTuple = (batt,)
    print(batt)
    cursor.execute(mySql_insert_query, recordTuple)
    connection.commit()
    print("Record inserted successfully into table")
    cursor.close()
except mysql.connector.Error as error:
    print("Failed to insert record into table {}".format(error))
finally:
    if connection.is_connected():
        connection.close()
        print("MySQL connection is closed")

这样修改后,你的插入操作应该就能正常执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:48:52