AME*_*AME 4 python sql sqlalchemy
我尝试基本上执行一些这样的 sql(以复杂的方式构建):
sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%')"
Run Code Online (Sandbox Code Playgroud)
使用此 Python 代码:
engine.execute(sql)
Run Code Online (Sandbox Code Playgroud)
然后会发生什么是我得到一个
TypeError: 'dict' object does not support indexing
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
不是 100% 确定,但我认为 SQLAlchemy 正试图将%字符解释为 SQL 参数。我会尝试加倍%字符来解决这个问题:
sql = "SELECT COUNT(*) FROM entities WHERE (unit = '%%')"
Run Code Online (Sandbox Code Playgroud)
这取决于您使用的数据库;不同的数据库适配器使用不同的参数样式。例如,用于 PostgreSQL 数据库连接的 psycopg2 模块使用的%s样式和文档%%是将%文字值插入 SQL 语句的正确方法。