尝试将 python 字典列表转换为 SQLite 表时,我不断收到错误消息?
Posted
技术标签:
【中文标题】尝试将 python 字典列表转换为 SQLite 表时,我不断收到错误消息?【英文标题】:When trying to convert a list of python dictionaries into a SQLite table I keep getting an error? 【发布时间】:2022-01-01 09:51:19 【问题描述】:我正在尝试使用以下代码将 python 字典列表转换为 SQLite 表。
conn = sqlite3.connect('stockData.db')
c = conn.cursor()
c.executemany(f"INSERT INTO AAPL1M2021 (time,open,high,low,close,volume) VALUES (%(t)s,%(o)s,%(h)s,%(l)s,%(c)s,%(v)s)", data)
每当我运行此代码时,它都会返回以下错误。
---------------------------------------------------------------------------
OperationalError Traceback (most recent call last)
<ipython-input-7-dce4eb1e6f6f> in <module>
2 conn = sqlite3.connect('stockData.db')
3 c = conn.cursor()
----> 4 c.executemany("INSERT INTO AAPL1M2021 (time,open,high,low,close,volume) VALUES (%(t)s,%(o)s,%(h)s,%(l)s,%(c)s,%(v)s)", data)
OperationalError: near "%": syntax error
我一定是错过了什么,因为我似乎找不到解决方案。
这是字典列表中的示例字典。
'v': 26666,
'vw': 133.233,
'o': 133.31,
'c': 133.49,
'h': 133.49,
'l': 133.02,
't': 1609750800000,
'n': 87
【问题讨论】:
是data
一个字典吗?
这是你的想法还是你确定你可以传递一个 dict 并使用 %(t)s
引用键?我找不到这方面的文档以及关于我认为只允许 %s
的错误的文档,并且值应该是正确的顺序
只要使用execute
【参考方案1】:
Python 的 sqlite 包不使用 %s
样式格式。它使用?
作为位置占位符或:name
作为关键字占位符。
所以你的查询可能看起来像
c.execute(
"INSERT INTO AAPL1M2021 (time,open,high,low,close,volume) VALUES (:t, :o, :h, :l, :c, :v)",
data
)
请注意,executemany
用于执行多个查询的参数列表。对于单个 dict 使用 execute
;使用 executemany
获取字典列表。
【讨论】:
以上是关于尝试将 python 字典列表转换为 SQLite 表时,我不断收到错误消息?的主要内容,如果未能解决你的问题,请参考以下文章