SQL OperationalError: near "%": 使用“executemany”将值插入到表中时出现语法错误

问题描述

我一直在尝试使用以下代码将值插入到表中:

top10_strong_beers.values.tolist() =
[['Surly Brewing Company','Abrasive Ale',2020,1],['Modern Times Beer','Blazing World',2],['Sixpoint Craft Ales','Hi-Res',3],['Southern Star Brewing Company','Red Cockaded Ale',4],['Tallgrass Brewing Company','Ethos IPA',5],['Caldera Brewing Company','Hopportunity Knocks IPA',6],['Mike Hess Brewing Company','Habitus (2014)',7],['Oskar Blues Brewery','GUBNA Imperial IPA',8],['Renegade Brewing Company','Redacted Rye IPA',9],['Sockeye Brewing Company','Dagger Falls IPA',10]]


query = """
INSERT INTO strong_beer_competition
    (brewery,beer,year,ranking)
     VALUES (%s,%s,%s)
    """

cur.executemany(query,top10_strong_beers.values.tolist())
conn.commit()

我收到以下错误:

OperationalError                          Traceback (most recent call last)
<ipython-input-47-e3e92e2c1d6f> in <module>
     11 """
     12 
---> 13 cur.executemany(query,top10_strong_beers.values.tolist())
     14 conn.commit()

OperationalError: near "%": syntax error

我不知道如何解决这个问题。我一直在寻找发生此错误的原因,但它似乎与我查找的其他代码相似。任何人都可以帮忙吗?任何让我更接近解决这个问题的东西都值得赞赏。谢谢。

解决方法

好吧,我在查找另一个问题的解决方案时不小心找到了答案。我应该使用“?”而不是“%s”。

我没有意识到有不同版本的 SQL,而且我显然正在使用使用“?”的 SQLite3。而不是“%s”。希望这能帮助像我这样的其他白痴。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...