私は本質的にこのようないくつかのSQLを実行しようとします(これは複雑な方法で構築されます):
sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%')"
この Python コードで:
engine.execute(sql)
次に何が起こるかというと、
TypeError: 'dict' object does not support indexing
これはなぜですか?
私は本質的にこのようないくつかのSQLを実行しようとします(これは複雑な方法で構築されます):
sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%')"
この Python コードで:
engine.execute(sql)
次に何が起こるかというと、
TypeError: 'dict' object does not support indexing
これはなぜですか?
100%確実ではありませんが、SQLAlchemyは%
文字をSQLパラメーターとして解釈しようとしていると思います。%
これを回避するために、キャラクターを2倍にしてみます。
sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%%')"
これは、使用しているデータベースによって異なります。異なるデータベースアダプタは、異なるパラメータスタイルを使用します。たとえば、PostgreSQLデータベース接続に使用されるpsycopg2モジュールは、SQLステートメントにリテラル値を挿入する正しい方法%s
であるスタイルとドキュメントを使用します。%%
%