Удалить, где в не работает - PullRequest
1 голос
/ 10 апреля 2020

Я работаю в проекте с БД Postres. Я пытаюсь удалить все строки таблицы на основе списка python.

Мой код:

listofMonths = []
listofMonths = pl.month.unique() # list of months in which there is data to update
deletequery =  f'DELETE FROM {table_name} WHERE month IN (' + ','.join((str(n) for n in listofMonths)) + ');'
db.execute(deletequery)

У меня ошибка: удалена ошибка в таблицу pl c Оператор (psycopg2.errors.UndefinedFunction) не существует: text = integer LINE 1: DELETE FROM pl c WHERE IN IN (2020-03-0 ... ^ Подсказка: ни один оператор не соответствует данному имени и типу аргумента. Вы может потребоваться добавить явное приведение типов.

столбец месяца является текстовым.

мой запрос выглядит так: 'УДАЛИТЬ ИЗ plclass123145722922162 ГДЕ месяц В (2020-03-01,2020) -01-01,2020-02-01,2020-04-01); '

Я уверен, что мне нужно' между значениями, но не знаю, как это исправить

спасибо

1 Ответ

2 голосов
/ 10 апреля 2020

Вы можете заключить n в пару одинарных кавычек при выводе:

deletequery =  f'DELETE FROM {table_name} WHERE month IN (' + ','.join(f"'{n}'" for n in listofMonths) + ');'
...