0

私のプログラムはsqlite3.OperationalError、次のメッセージで例外を発生させます:

: near ",": syntax error

SQL 文字列を表示する try-except ブロックがあります。

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

何らかの理由で、パラメーター化されたステートメントを使用していません。

4

1 に答える 1

3

これはおそらく のバグ*ですsqlite3

このテスト コードpython3.3 と sqlite 3.7.15.2 では問題なく動作しますが、sqlite 3.7.3 では失敗します。

つまり、新しいバージョンで修正する必要があるため、sqlite バージョン (または python) を更新して機能させるか、複数の値セットを使用しないことでこれを回避する必要があります。


*編集: 実際にはバグではなく、バージョン 3.7.11でのみ導入された機能です。

于 2013-07-06T14:47:43.927 に答える