gpt4 book ai didi

python - SQLalchemy 选择所有具有可选属性

转载 作者:行者123 更新时间:2023-11-30 21:47:42 25 4
gpt4 key购买 nike

我使用 SQLalchemy 查询我的数据库。我可以用这样的方式选择所有多行/对象:

def selectAllObjects():
objects = session.query(Object).all()

但是,我想构建一个函数来检查是否存在给定的任何约束,如果存在则合并这些约束。所以我的思路是这样的:

def selectAllObjects(attribute1="default",attribute2="default"):
if attribute1 != "default" and attribute2 != default:
objects = session.query(Object).filter_by(attribute1=attribute1,
attribute2=attribute2).all()
elif attribute1 != "default":
objects = session.query(Object).filter_by(attribute1=attribute1).all()
...etc, etc...

如您所见,当属性数量增加时,这会变得非常难看。执行此操作的 pythonic 方法是什么?

最佳答案

Query 对象是可链接的,来自 docs :

Query is produced in terms of a given Session, using the query() method:

q = session.query(SomeMappedClass)

所以你可以这样写:

def selectAllObjects(attribute1="default", attribute2="default"):
query = session.query(Object)
if attribute1 != "default" and attribute2 != "default":
query = query.filter_by(
attribute1=attribute1,
attribute2=attribute2,
)
elif attribute1 != "default":
query = query.filter_by(attribute1=attribute1)
return query.all()

关于python - SQLalchemy 选择所有具有可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686633/

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