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

存储单float值及时间戳到MariaDB时出现SQL语法错误的原因

问题原因及解决方案

你遇到的这个语法错误,根源出在传递参数的方式上!

在你的第二个代码片段里,执行SQL的这一行:

cursor.execute(sql,(day0))

这里的(day0)并不是一个元组——Python会把它当成普通的括号包裹变量,相当于直接传了day0这个单个值。但cursor.execute要求第二个参数必须是序列类型(比如元组、列表),当只有一个参数时,你需要给元组加个尾逗号(trailing comma)来明确告诉Python这是一个元组,不然它会解析失败,进而导致SQL语句里的%s无法正确替换,触发语法错误。

修正后的代码

把参数部分改成(day0,)就可以解决问题了:

mariadb_connection = mariadb.connect(user='user', password='pw', database='mydb')
cursor = mariadb_connection.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS mytable2 (ts TIMESTAMP, Day0 float(10,8))")
sql ="INSERT INTO mytable2 (ts, Day0)"
sql += "VALUES (NULL, %s)"
cursor.execute(sql,(day0,))  # 这里加了逗号,变成正确的单个元素元组
print("Storing values into SQL database")
mariadb_connection.commit()
mariadb_connection.close()

补充说明

对比你第一个能正常运行的代码,(day0, day1, day2, day3, day4, day5)是多元素元组,不需要额外加逗号Python也能识别,但单个元素的元组必须加逗号——这是Python的语法特性,很容易踩坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:36:19