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

Python操作MariaDB插入数据报错:SQL语法问题求助

解决Python向MariaDB插入数据的SQL语法错误

嘿,我一眼就发现你问题的根源啦!从错误日志里的提示near 'stron)VALUES ('12345678','wertvfdg','3','1243','213')'就能看出来,问题出在你的列名ilosc stron上——SQL中带空格的列名必须用反引号(`)包裹,不然数据库会把它当成两个独立的标识符,从而抛出语法错误。

错误原因分析

你写的列名ilosc stron包含空格,MariaDB无法直接识别这种带空格的标识符,必须用反引号将整个列名括起来,才能让数据库正确解析这个列的名称。

修正后的代码示例

第一种写法修正:

# 给带空格的列名加上反引号
insert = ("INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, `ilosc stron`)" 
          "VALUES (%s,%s,%s,%s,%s)") 
dane = (ISBN, tytul, autor, rok_wydania, ilosc_stron) 
cursor.execute(insert, dane)
# 别忘了提交事务!否则数据不会真正写入数据库
conn.commit()

第二种写法修正:

cursor.execute(
    "INSERT INTO ksiazka (ISBN, tytul, autor, rok_wydania, `ilosc stron`) VALUES (%s,%s,%s,%s,%s)", 
    (ISBN, tytul, autor, rok_wydania, ilosc_stron)
)
# 提交事务,确保数据持久化
conn.commit()

额外注意事项

  • 事务提交:执行插入、更新、删除这类写操作后,一定要调用conn.commit()(conn是你的数据库连接对象),默认情况下MariaDB不会自动提交事务,跳过这一步数据不会真正存入数据库。
  • 变量校验:确保ISBN、tytul等变量都已经被正确赋值,且数据类型和数据库表中对应的列类型匹配(比如rok_wydania如果是整数类型,变量值不能是字符串)。
  • 列名规范:如果可以的话,建议后续创建表时用下划线代替空格(比如ilosc_stron),这样能避免这类语法问题,也让代码更易读规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:17:29