SQLAlchemy核心: 如何在LIMIT/OFFSET子句中使用bindparam?

3

这是我尝试的代码片段

query = tbl_scores.select().limit( bindparam('lim') )

然而,我遇到了以下错误。
TypeError: int() argument must be a string or a number, not 'BindParameter'

有人能举一个使用bindparam来处理LIMIT/OFFSET的例子吗?

Python版本为2.7.5,SQLAlchemy版本为0.8.4。


假设有一个Web API返回排名前几的玩家。构建一个带有绑定参数的查询语句,然后将其存储在线程本地位置,以便请求可以共享同一个预编译查询。

# TypeError occurs here
a_thread_local_place.query = join(tbl_scores,
                          tbl_master_player,
                          tbl_scores.c.uid == tbl_master_player
                     ).\
                     select().limit(bindparam('lim'))

每当webapi处理请求时,我希望使用预编译查询来执行如下查询。
result = engine.connect().execute(
    a_thread_local_place.query,
    lim = 10,
)

试试这样写: query = tbl_scores.select().limit(10)参考这里 - Syed Habib M
谢谢Syed,我知道那个查询很好用。但是出于性能原因,我想将其绑定参数,因为我的实际查询涉及许多连接表格。 - yukinarit
你可以展示一下你是如何执行那个查询的吗?例如展示一下代码。 - Syed Habib M
好的,Syed。我编辑了问题。 - yukinarit
你有没有注意到一件事?bindparam返回的是<object BindParameter>。但是limit需要的确切类型是strint。你能把bindparam对象改成strint吗?这可能会解决你的问题。 - Syed Habib M
是的,我注意到了。我想知道是否有任何解决方法,否则不支持LIMIT/OFFSET的bindParam。 - yukinarit
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接