我是python和SQLALCHEMY的新手,我遇到了这个疑问,是否可以根据同一列的列的单元格值过滤表的行。 例如:
Sbranch=value
result=Transaction.query.filter(Transaction.branch==Sbranch)
.order_by(desc(Transaction.id)).limit(50).all()
如果Sbranch=0
的值,我想读取所有行而不管Sbranch
值,否则我想要过滤包含Transaction.branch==Sbranch
的行。
我知道可以通过比较Sbranch
(if-else条件)的值来实现,但随着此类列数的增加,它会变得复杂。
例如:
Sbranch=value1
trans_by=value2
trans_to=value3
.
.
result=Transaction.query.filter(Transaction.branch==Sbranch,Transaction.trans_by==value2,Transaction_to==trans_to)
.order_by(desc(Transaction.id)).limit(50).all()
我想对所有3列应用类似的过滤器。
我想知道SQLALCHEMY中是否有任何内置函数来解决这个问题。
答案 0 :(得分:3)
您可以选择根据SBranch
query = Transaction.query
if SBranch != 0:
query = query.filter(Transaction.branch == SBranch)
result = query.order_by(Transaction.id.desc()).limit(50).all()
答案 1 :(得分:-1)
我认为我找到了解决方案,它不是最好的,但会减少开发人员(而非处理器)的工作。
Sbranch=value
branches=[]
if Sbranch==0:
# Append all the values into the array for which the rows are filtered
# for example:
branches=[1,2,4,7,3,8]
else:
branches.append(branch)
result=Transaction.query.filter(Transaction.branch.in_(branches))
.order_by(desc(Transaction.id)).limit(50).all()