这是我尝试的代码片段
query = tbl_scores.select().limit( bindparam('lim') )
但是,我收到以下错误。
TypeError: int() argument must be a string or a number, not 'BindParameter'
任何人都可以举一个使用绑定参数进行限制/偏移的示例吗?
Python 2.7.5, SQLAlchemy 0.8.4
假设一个 webapi 返回顶级玩家及其排名。像这样使用 bind 参数构造一个查询,然后将其存储在线程本地位置,以便请求可以共享相同的预编译查询。
# 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,
)
目前你不能,但有一个悬而未决的问题,并且有一个补丁正在开发中:
https://bitbucket.org/zzzeek/sqlalchemy/issue/3034/use-my-own-bindparam-for-querylimit