TypeError в postgres Upsert - PullRequest
       13

TypeError в postgres Upsert

0 голосов
/ 15 марта 2019

Я хочу сделать расстроен в postgres (вставить или обновить)

Если user_id не существует в таблице, я хочу вставить строку с user_id = user_id, first_date = date, last_date = date. Но если пользователь уже существует, я хочу обновить только last_date с указанием даты.

Я получил ошибку, поэтому попытался упростить вставку с помощью:

pd.read_sql("INSERT INTO table (user_id, first_date, last_date) 
             VALUES ( "+str(user_id)+", '"+date+"','"+date+"')
             ON CONFLICT (user_id)
             DO NOTHING", conn)

Но я получаю эту ошибку "Ошибка типа: объект NoneType не повторяется"

И я не могу понять, что не так ...

Я использую Jupyter и Postgres v11

1 Ответ

0 голосов
/ 15 марта 2019

read_sql ожидает запрос, возвращающий данные.Ваш INSERT не делает.

Вы можете использовать функцию исполнения в документации :

from pandas.io import sql
sql.execute('INSERT INTO table_name VALUES(?, ?, ?)', engine,
        params=[('id', 1, 12.2, True)])

или добавить в запрос предложение RETURNING, См. Отличную документацию postgresql .

...