【问题标题】:Insert Into SQLite DB from Python - "near "?": syntax error"从 Python 插入 SQLite DB - “靠近”?“:语法错误”
【发布时间】:2020-06-18 10:54:09
【问题描述】:

我在尝试将数据从 Pandas df 插入 SQLite DB 时不断收到此错误:near "?": syntax error。代码 sn-p 看起来像这样,在另一个脚本中,类似的想法可以正常工作。我的df 有 4 列(int & 3x string),相同的列名和类型在名为titles 的 SQLite 表中。

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()

可能是什么原因?

【问题讨论】:

    标签: python sql database sqlite sql-insert


    【解决方案1】:

    您缺少 VALUES() 关键字,该关键字必须位于要插入的值的元组之前:

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

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

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

    【讨论】:

    • 列名注释绝对正确,实际上,即使在使用您的答案并添加VALUES之后,如果数据框的宽度与数据框的数量不匹配,OP可能仍然存在问题列。
    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 2020-04-07
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多