【问题标题】:Python Raw SQL query is returning values enclosed inside [('...'),]Python Raw SQL 查询返回包含在 [('...'),] 内的值
【发布时间】:2016-05-31 01:19:45
【问题描述】:

我在 Django 中使用原始 SQL 查询时遇到问题。

在views.py中,定义了如下函数:

def functionSQL():

    from django.db import connection
    cursor = connection.cursor()
    cursor.execute('select column_name from "table_name" where CONDITION')
    value = cursor.fetchall()
    return value

值返回为
[('returned_value'),],而不是returned_value

我在这里缺少什么吗? 如何从返回值中删除不必要的前缀和后缀?

【问题讨论】:

  • fetchall() 返回由字段(列)组成的结果行列表。您的结果似乎只有一行和一个字段。
  • 这不是 Django 原始查询。这是一个原始的 sql 查询。如果你要写它们。还不如对django说好
  • 我可以写fetchone()而不是fetchall(),但结果还是一样。

标签: python django views models rawsql


【解决方案1】:

它们不是前缀后缀.fetchall() 的返回值始终是一个元组列表,无论它返回单个值还是多个行和列。来自docs

该方法获取查询结果集的所有(或所有剩余)行并返回元组列表。如果没有更多行可用,则返回一个空列表。

话虽如此,您可以使用以下方式从函数中返回单个值:

def functionSQL():
    ...
    value = cursor.fetchall()
    return value[0][0] if value != [] else value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多