私は本質的にこのようないくつかの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であるスタイルとドキュメントを使用します。%%%