Получение синтаксической ошибки при параметризации запроса вставки в python postgresql - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь отправить данные на PostgreSQL, данные представляют собой набор строк, т. Е. (Время, цена).

Проблема заключается в том, что при отправке данных с помощью простого запроса ( не параметризован ) работает отлично! Ниже приведен простой запрос:

cur.execute("INSERT INTO paxos (date,price) VALUES ('2020-04-09 14:39:58.145804', '$1,664.08');");

Но так как эти значения не являются фиксированными, я хочу сохранить их в переменной и использовать параметризованный запрос для отправки данных, но параметризованный запрос не работает на меня. Вот параметризованный запрос.

cur.execute("INSERT INTO paxos (date, price) values (?, ?)",(time, price))

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

def insert_data(time, price):

con = psycopg2.connect(database="", user="", password="", host="", port="5432")
print("Database opened successfully")
cur = con.cursor()

data_tuple = (time, price)

cur.execute("insert into paxos (date, price) values (?, ?)",(time, price))

con.commit()
print("Record inserted successfully")
con.close()
insert_data("2020-04-09 14:39:58.145804", "$1,664.08")

Вот сообщение об ошибке: image link

1 Ответ

0 голосов
/ 09 апреля 2020

Кажется, что это синтаксическая ошибка python. Я думаю, что вы должны использовать метод форматирования строкового объекта (см. Codenippet ниже). Я не могу проверить это прямо сейчас, но согласно моему старому коду, я всегда сначала «строил» строку запроса, а затем передавал строковый объект в курсор. Попробуйте что-то вроде этого:

artist = "Aphex Twin"
title = "Windowlicker"    
query = '''SELECT EXISTS(SELECT * FROM tracks
                    WHERE artist ILIKE \'{}\'AND
                    title ILIKE \'{}\')'''.format(artist, title)
cursor.execute(query)
...