栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

在元组列表中具有元组的SQLAlchemy复杂in_子句

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在元组列表中具有元组的SQLAlchemy复杂in_子句

好吧,多亏了以上的郝莲,我想出了一个实用而痛苦的解决方案。

假设我们有一个声明式样式的映射类,

Clazz
以及一个
list
复合主键值的元组
values
(已编辑,以使用更好的(IMO)sql生成样式):

从sqlalchemy.sql.expression导入文本,bindparam...    def __gParams(self,f,vs,ts,bs):        对于j,v枚举(vs): 键= f%(j + 97) bs.append(bindparam(key,value = v,type_ = ts [j])) 产生':%s'%键    def __gRows(self,ts,values,bs):        对于i,vs的枚举(值): f ='%% c%d'%i 产生'(%s)'%','.join(self .__ gParams(f,vs,ts,bs))    def __gKeys(self,k,ts):        对于k中的c:   ts.append(c.type) 屈服强度str(c)    def __makeSql(self,Clazz,values):        t = []        b = []        返回文字(     '(%s)in(%s)'%(         ','.join(self .__ gKeys(Clazz .__ table __。primary_key,t)),         ','.join(self .__ gRows(t,values,b))),     bindparams = b)

此解决方案适用于复合键或简单主键。但是,它可能比

col.in_(keys)
简单主键的速度稍慢。

我仍然对更好的方法的建议感兴趣,但是这种方法目前仍在起作用,并且比

or_(and_(conditions))
方法或
for key in keys:do_stuff(q.get(key))
方法的性能明显好。



转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号