【问题标题】:How to contain a Sqlalchemy query into a Python variable?如何将 Sqlalchemy 查询包含到 Python 变量中?
【发布时间】: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


【解决方案1】:

好的,非常感谢@Epsi95,我的问题是因为我正在测试我的一些条件不满足。要保存一个 sqlalchemy 查询,你可以像我一样做,它可以工作:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2017-01-21
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多