【问题标题】:Sqlite using Python3 error?Sqlite 使用 Python3 错误?
【发布时间】:2015-07-10 16:24:36
【问题描述】:

我正在尝试通过以下方式将一些数据插入到 sqlite 数据库中:-

param = '("593863695396044801","Ivan F. Siahaan","307783731","None","65","83","Thu Apr 30 19:45:13 +0000 2015","xyz")'

>>> conn.execute("INSERT INTO data "+param) Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.OperationalError: near ")": syntax error

我初始化到数据库的连接如下:-

from sqlite3 import dbapi2 as sqlite

conn = sqlite.connect('dataStore')

我在这里做错了什么?

【问题讨论】:

    标签: python python-3.x sqlite


    【解决方案1】:

    您的 SQL 语法有误;引用和INSERT 语句的语法都不正确。

    SQLite 不支持字符串值的双引号,只支持单引号。来自SQLite keywords documenation

    'keyword' 单引号中的关键字是字符串文字。
    "keyword" 双引号中的关键字是标识符。

    您使用的是双引号,但对于字符串文字,您需要使用单引号。

    您还缺少VALUES 关键字;见INSERT statement documentation;模式是INSERT INTO &lt;table&gt; VALUES (&lt;value list&gt;)

    但是,您确实希望将引用留给数据库本身。在此处使用 SQL 参数:

    statement = "INSERT INTO data VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
    params = (593863695396044801, "Ivan F. Siahaan", 307783731, None, 65, 83, "Thu Apr 30 19:45:13 +0000 2015", "xyz")
    conn.execute(statement, params)
    

    请注意,这还允许您使用 Python None 单例在数据库中插入 NULL

    【讨论】:

    • 我将 param 修改为 param = "('593863695396044801','Ivan F. Siahaan','307783731','None','65','83','Thu Apr 30 19:45 :13 +0000 2015','xyz')" 但它仍然产生同样的错误..
    • @AkashRana:你也错过了VALUES
    • 奇怪的是我只能在 8 分钟后接受你的回答.. :)
    猜你喜欢
    • 2019-09-30
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多