【发布时间】:2021-11-04 01:16:25
【问题描述】:
我的代码中有 12 个 if/else 语句,每个语句都会使用 Sqlalchemy 进行不同的查询,如下所示:
if condition1:
query1 = s.query(Invoice).filter(Invoice.trading_partner_name==trading_partner_name).all()
elif condition2:
query2 = s.query(Invoice).filter(...).all()
elif condition3:
query3 = s.query(Invoice).filter(...).all()
elif condition 4... and so on
然后我想用下面的代码(或与此类似的代码)显示上面的每个查询:
for data in query1:
[a few other very long codes]
我可以将上面的代码放在每个 if/else 语句中的每个查询结果之后,但这会使我的代码非常冗长且冗余。我尝试创建一个希望保存每个查询值的变量:
query_variable = 0
然后我尝试将此变量设置为每个 if/else 语句中的每个查询变量,如下所示:
if condition1:
query1 = s.query(Invoice).filter(Invoice.trading_partner_name==trading_partner_name).all()
query_variable = query1
elif condition2:
query2 = s.query(Invoice).filter(...).all()
query_variable = query2
elif condition3:
query3 = s.query(Invoice).filter(...).all()
query_variable = query3
elif condition 4... and so on
然后我尝试将上面的 query_all 变量替换为长代码的循环,如下所示:
for data in query_variable:
[a few other very long codes]
但是,它没有用。当我运行代码以从 query_variable 查询数据时,出现以下错误:
TypeError: 'int' object is not iterable
我试图在 StackOverflow 上找到答案,但我无法... 如果您知道如何解决此问题/或“如何将 Sqlalchemy 查询包含到 Python 变量中?”的答案,请帮助我!
非常感谢您的帮助!
【问题讨论】:
-
你能在for循环之前
print(query_variable)吗?最好的选择是编写一个函数并根据条件传递trading_partner_name,然后该函数将进行查询和处理。 -
它说 0....@Epsi95
-
这意味着您的任何条件都不满足,并且您的初始分配
query_variable = 0保留了。检查您的条件并在最后检查您的条件,如果不满足条件,则处理您想要执行的操作。 -
好的,非常感谢。我会检查为什么会发生这种情况:)
标签: python loops variables sqlalchemy