Сбой простого запроса select в python

#python #postgresql #psycopg2

#python #postgresql #psycopg2

Вопрос:

моя проблема в том, что я хочу выполнить запрос select в python, но он завершается неудачей.

 def check_account(cur, account_id):
    sql = """SELECT description FROM accounts WHERE id = %s;"""
    acc_desc = None
    try:
        cur.execute(sql, (account_id,))
        acc_desc = cur.fetchone()[0]
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)

    return acc_desc
  

Это решение, похоже, не работает, поскольку оно возвращает тип None, что странно, потому что, когда я выполняю это в своей консоли SQL, оно возвращает то, что я хочу (текст). Подключение к базе данных также работает, потому что запросы insert (которые кодируются аналогично этому) работают так, как должны. Я использую postgresql и python 3.8.5, а также библиотеку psycopg2 для подключения к базе данных и курсора.

Комментарии:

1. Вы уверены, что передаете действительный account_id?

2. Да, когда я отлаживаю, я проверяю cur. атрибут запроса, который показывает действительный account_id, который присутствует в моей базе данных. Чтобы добавить, я попробовал простой «ВЫБРАТЬ * ИЗ учетных записей», который также вернул NoneType.

3. Что, если вы сделаете это. acc_desc = cur.fetchone() без получения 1-го индекса.

4. Он по-прежнему возвращает нетип, даже когда я пытаюсь cur.fetchall() , результатом является пустой список.

5. Какой результат print(cur.mogrify(sql, (account_id,))) ?