【问题标题】:sqlalchemy print results instead of objectssqlalchemy 打印结果而不是对象
【发布时间】:2017-02-07 15:00:23
【问题描述】:

我正在尝试使用以下代码将我的查询结果打印到控制台,但它一直向我返回对象位置。

test = connection.execute('SELECT EXISTS(SELECT 1 FROM "my_table" WHERE Code = 08001)')
print(test)

我得到的结果是 - <sqlalchemy.engine.result.ResultProxy object at 0x000002108508B278>

如何打印出value 而不是对象?

我问的原因是因为我想使用该值进行比较测试。 例如:

if each_item not in test:
    # do stuffs

【问题讨论】:

    标签: python sqlite sqlalchemy


    【解决方案1】:

    像这样,test 包含查询返回的所有行。

    如果你想要一些可以迭代的东西,你可以使用 fetchall 例如。像这样:

    test = connection.execute('SELECT EXISTS(SELECT 1 FROM "my_table" WHERE Code = 08001)').fetchall()

    然后您可以遍历行列表。每行将包含所有字段。在您的示例中,您可以按位置访问字段。你只有一个在位置一。这样你就可以访问1

    for row in test:
        print(row[0])
    

    【讨论】:

    • 嗯,这会返回给我0。不知道为什么
    • 好的。我想我知道为什么。它以string 的形式存储在SQL 中,这就是它返回0 的原因:)
    • 这是有道理的,如果它是一个数字,你就不会有前导零。当我重现该问题时,我使用了number,而不是string
    【解决方案2】:

    test 是一个包含行值的对象。所以如果列名是value,你可以使用test.value来调用它。

    如果您正在寻找更“方便”的方式(例如遍历 test 的每一列),您必须明确定义这些函数(作为 test 的方法或作为其他函数旨在遍历这些类型的行)。

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      相关资源
      最近更新 更多