SQLite语法错误,但SQL字符串手动工作(python)

时间:2013-07-06 14:04:40

标签: python sqlite

我的程序引发sqlite3.OperationalError异常,并显示以下消息:

: near ",": syntax error

我有一个try-except块,它打印出SQL字符串。:

try:
    self._db_cur.execute(sql)
except Exception, e:
    print sql
    raise e

这是打印的SQL ...最有趣的部分是...如果我在我的SQLite管理器中插入该查询... 它可以工作。我在这里很傻。

INSERT INTO connections_to_jjos(
    connections_id,
    jjo_error_id,
    binder_task_id
)
VALUES

(
    55,
    (select id from jjo_errors where name = "--Unknown--"),
    (select id from tasks where name = "DCDD")
)
, 

(
    55,
    (select id from jjo_errors where name = "--Unknown--"),
    (select id from tasks where name = "ANDD")
)

由于某些原因,我没有使用参数化语句,如果它有帮助......

1 个答案:

答案 0 :(得分:3)

这可能是sqlite3中的错误*。

虽然this测试代码适用于python3.3和sqlite 3.7.15.2,但fails使用sqlite 3.7.3。

这意味着它应该在较新的版本中修复,因此你需要更新你的sqlite版本(或python)才能使它工作,或者通过不使用多个值集来解决这个问题。


*编辑:实际上不是一个错误,只是一个仅在version 3.7.11

中引入的功能