SQLAlchemy Core:如何在LIMIT/OFFSET子句中使用bindparam?
这是我尝试过的代码片段
query = tbl_scores.select().limit( bindparam('lim') )
但是,我遇到了以下错误。
TypeError: int() argument must be a string or a number, not 'BindParameter'
有没有人能给个例子,说明如何在LIMIT/OFFSET中使用bindparam?
使用的环境是Python 2.7.5和SQLAlchemy 0.8.4
假设有一个网络接口,用来返回排名前的玩家及其排名。可以像这样构建一个带有绑定参数的查询,然后把它存储在一个线程本地的地方,这样多个请求就可以共享同一个预编译的查询。
# 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'))
每次网络接口处理请求时,我想用这个预编译的查询来执行查询,像这样。
result = engine.connect().execute(
a_thread_local_place.query,
lim = 10,
)
1 个回答
2
现在你还不能这样做,不过这个问题已经被提出来了,正在修复中:
https://bitbucket.org/zzzeek/sqlalchemy/issue/3034/use-my-own-bindparam-for-querylimit