4

私は本質的にこのようないくつかのSQLを実行しようとします(これは複雑な方法で構築されます):

sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%')"

この Python コードで:

engine.execute(sql)

次に何が起こるかというと、

TypeError: 'dict' object does not support indexing

これはなぜですか?

4

1 に答える 1

7

100%確実ではありませんが、SQLAlchemyは%文字をSQLパラメーターとして解釈しようとしていると思います。%これを回避するために、キャラクターを2倍にしてみます。

sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%%')"

これは、使用しているデータベースによって異なります。異なるデータベースアダプタは、異なるパラメータスタイルを使用します。たとえば、PostgreSQLデータベース接続に使用されるpsycopg2モジュールは、SQLステートメントにリテラル値を挿入する正しい方法%sであるスタイルとドキュメントを使用します。%%%

于 2012-09-11T10:03:25.370 に答える