Как передать Null в качестве значения для хранимого процесса для запроса postgresdb с помощью Python?

1

У меня есть хранимая процедура, где мне нужно передать "null" в качестве значения для запроса

Вот дикты:

dict1 = {'name':'apple', 'age':23, 'place':None, 'year':None, 'country': ''}

Примечание. Значения всегда будут меняться для соответствующих клавиш.

Я пробовал это, но он не работает для моего сценария, поскольку он/она имеет постоянные значения и не имеет пустых строк, как и я. Как вставить значения "NULL" в базу данных PostgreSQL с помощью Python?

Я попытался передать значения как None на месте null, но python принимает его как None, а не null. Его бросает мне сообщение об ошибке psycopg2.ProgrammingError: column "none" does not exist

Как передать значение dict1 None в качестве значения null для хранимого запроса proc, как показано ниже, используя python?

select * from sampletable."getvalues"('apple', 23, null, null, '')

Теги:
python-3.x
dictionary

1 ответ

0
Лучший ответ

None них не преобразован в NULL помощью psycopg2, независимо от того, есть ли функции в запросе или нет. Это правильный способ передачи словаря в cursor.execute():

dict1 = {'name':'apple', 'age':23, 'place':None, 'year':None, 'country': ''}
query = cur.mogrify('select * from func(%(name)s, %(age)s, %(place)s, %(year)s, %(country)s)', dict1)
print(query)

Выход:

b"select * from func('apple', 23, NULL, NULL, '')"
  • 0
    Ваш ответ не работает, так как 'select * from sampletable. "Getvalues"' изменит запрос на "select * from sampletable." Getvalues "(\ 'apple', \ 23 \, NULL, NULL, \ '\'); " используя mogrify, который полностью меняет запрос.
  • 0
    mogrify() предназначен только для просмотра запроса, просто замените его на execute() чтобы выполнить запрос. Трудно отладить код, который я не вижу. Пожалуйста, отредактируйте вопрос и покажите свой код Python, чтобы кто-то мог помочь вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню