从python插入sqlite db-“near”?:语法错误

hc2pp10m  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(332)

在尝试将数据从pandas df插入到sqlite db时,我一直收到此错误: near "?": syntax error . 代码片段如下所示,在另一个脚本中,类似的想法也可以。我的 df 有4列(int&3x string),相同的列名和类型在sqlite表中称为 titles .

conn = sqlite3.connect('test_db_2.db')
c = conn.cursor()

for i in range(len(df)):
    try:
        c.execute("""INSERT INTO titles (?,?,?,?)""",df.iloc[i,:])
        conn.commit()

原因是什么?

ep6jt1vc

ep6jt1vc1#

你错过了 VALUES() 关键字,它必须位于要插入的值的元组之前:

INSERT INTO titles VALUES (?, ?, ?, ?)
                 --^--

我还建议您枚举要插入的列。这在sql中是一个很好的实践,因为它使不了解您的数据结构的人更容易理解查询,并且允许您不为所有列提供值:

INSERT INTO titles(col1, col2, col3, col4) VALUES (?, ?, ?, ?)
                --^ -- changae this to your actual column names

相关问题