python - SqlAlchemy 检查关系属性是否在列表中

标签 python mysql database python-2.7 sqlalchemy

我有 2 张 table : 1)有与第二个表有关系的列项目的商店 2)项目表 - 有一些详细信息,例如品牌等。

我正在尝试进行查询,该查询将为我提供该品牌在品牌列表中的商店的所有原始数据。

brands = self.session.query(Items).filter(Items.brand.in_(list))
self.session.query(Shop).filter((Shop.active_item== True) &
                                        (Shop.item.has(brands)))

提前致谢

最佳答案

SQLAlchemy 仍然不支持带有对象的 in_。因此你可以尝试两种方法。

  1. 获取品牌 ID 并在第二个查询中使用 in_ 进行过滤。

    brands = self.session.query(Items).filter(Items.brand.in_(list))
    brand_ids = [obj.id for obj in brands]  
    self.session.query(Shop).filter((Shop.active_item== True) &
                                         (Shop.item.id.in_(brand_ids)))
    
  2. 使用品牌列表本身进行过滤。

    self.session.query(Shop).filter((Shop.active_item== True) &
                                         (Shop.item.brand.in_(list)))
    

这简直是我的错觉。但我你能明白这个想法。

干杯。

关于python - SqlAlchemy 检查关系属性是否在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783022/

相关文章:

python - 如何将函数应用于两列 Pandas 数据框

Mysql联合查询记录结果清空列

mysql - 使用子查询保存查询结果的最佳方法是什么?

php - 获取指定数量的列

php - 无法传递参数。添加图像根名称$_Files以插入到数据库

python - 使用 Twisted 端点时可以设置 SSL 上下文选项吗?

python - Docker 化的 Python 脚本在访问存储到/tmp 的文件时出现问题

python - 如何在Python中根据groupby()输出执行累积和

php - 在 PHP 中生成一个 Action 的发生总和

mysql - mysql中递归查询的更好方法