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

Python使用mysql.connector向MySQL插入多列数据的正确语法求助

问题原因
  • 列名标识错误:MySQL中纯数字、保留关键字作为列名时,必须用反引号()包裹才能被识别为字段名,你直接写(1, 2, 3, 4, 5, 6)`会被MySQL判定为数值常量,不符合INSERT语法规则,是触发1064错误的核心原因。
  • SQL拼接风险:你使用f字符串拼接SQL语句,不仅存在SQL注入风险,也可能因为数值中包含特殊字符(如单引号)引发二次语法错误。
修正后的代码

去掉不必要的数值转字符串操作,改用mysql.connector官方推荐的参数化查询写法:

import mysql.connector
from mysql.connector import Error
import random
import math
import time


try:
    conn = mysql.connector.connect(host='hidden', database = 'lvad', user='hidden', password='hidden') 
    print ("sql connected")
        
except Error as e:
    print (e)

cursor = conn.cursor()  

while True:
    # 不需要提前转为字符串,参数化查询会自动处理数据类型
    data1 = random.random()
    data2 = 10 * data1
    data3 = math.sin(data2)
    data4 = 0
    data5 = 123.23432324
    data6 = 0.7

    # 纯数字列名用反引号包裹,值占位符用%s
    query = "INSERT INTO heart_data (`1`, `2`, `3`, `4`, `5`, `6`) VALUES (%s,%s,%s,%s,%s,%s)"
    # 参数元组作为execute的第二个传入参数
    cursor.execute(query, (data1, data2, data3, data4, data5, data6))
    conn.commit()

    print("data has been sent")
    print(" ")
    time.sleep(0.5)

# 程序退出前记得关闭游标和连接,避免资源泄漏
cursor.close()
conn.close()
补充说明

如果你的heart_data表实际列名不是1-6,把反引号中的内容替换为实际字段名即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:39:01