2016-05-31 4 views
0

Я столкнулся с проблемой при использовании необработанных SQL-запросов в Django.Python Необработанный 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

Что-то я здесь не хватает? Как удалить ненужный префикс и суффикс из возвращаемого значения?

+3

'fetchall()' возвращает список строк результата, который состоит из полей (столбцов). Кажется, что у вашего результата есть одна строка с одним полем. –

+1

Это не сырой запрос Django. Это необработанный sql-запрос. Если вы собираетесь писать их. Могу также сказать «хорошо» на django – e4c5

+0

Я могу написать fetchone() вместо fetchall(), но результат все тот же. –

ответ

1

Это не префиксы и суффиксы. Возвращаемое значение .fetchall() - это всегда список кортежей, возвращает ли оно одно значение или несколько строк и столбцов. От docs:

Метод извлекает все (или все остальные) строки набора результатов запроса и возвращает список кортежей. Если больше строк не доступно, он возвращает пустой список.

Это, как говорится, вы можете вернуть одно значение из вашей функции, используя что-то вроде этого:

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

Спасибо, миллион ... –

 Смежные вопросы

  • Нет связанных вопросов^_^