gpt4 book ai didi

python - 如何复制 SQLAlchemy 查询对象?

转载 作者:行者123 更新时间:2023-12-01 04:25:14 30 4
gpt4 key购买 nike

我尝试过 copy.deepcopy,但出现此错误: 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy_reg.py”,第 93 行,位于 newobj 中 返回 cls.new(cls, *args)TypeError: object.new(psycopg2._psycopg.type) 不安全,请使用 psycopg2._psycopg.type.new()

为什么我要复制?因为我有两个要运行的查询几乎但不完全相同。我已经应用了六个相同的过滤器,现在我想应用一个过滤器,执行它,然后“回滚”并应用另一个过滤器并执行它。

我尝试了 pickle 和 unpickling 作为解决方法,但 pickle 不适用于函数对象。

最佳答案

每当您添加 .filter() 或类似查询的内容时,它都会返回查询的副本。请参阅此处的文档:http://docs.sqlalchemy.org/en/rel_0_8/orm/query.html#sqlalchemy.orm.query.Query.filter

我想您可以在您的案例中使用该功能:

query = session.query(Customer)
main_query = query.filter(Customer.size > 150)
query1 = main_query.filter(Customer.age > 50)
query2 = main_query.filter(Customer.age < 30)

query1 将返回所有大于 150 岁且大于 50 岁的客户

query2 将返回所有年龄大于 150 岁且小于 30 岁的客户

关于python - 如何复制 SQLAlchemy 查询对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33228685/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com