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 参数。我会尝试将%角色加倍来解决这个问题:

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

这取决于您使用的数据库;不同的数据库适配器使用不同的参数样式。例如,用于 PostgreSQL 数据库连接的 psycopg2 模块使用的%s样式和文档%%%是在SQL 语句中插入文字值的正确方法。

于 2012-09-11T10:03:25.370 回答