Я использую модуль MySQLdb в python для записи операторов SQL. Мне сложно использовать переменные так, как я хотел бы. Вот моя работа:Использование execute()/executemany() для операторов SQL в python
stmt = "\
INSERT INTO Table1\
(name, status)\
SELECT (:name1, :status1)\
FROM dual\
WHERE NOT EXISTS (\
SELECT 1 FROM Table1\
WHERE name =(:name1))"
dic = {"name1":"Bob", "status1":"Active"}
dbcursor.executemany(stmt, dic)
dbconnection.commit()
print("Insertion to Table1 committed\n\n")
Это не работает, я в конце концов откатить с сообщением об ошибке not all arguments converted during string formatting
. Если я жестко кодирую значения словаря, то вставка отлично работает. Можете ли вы указать мне правильный способ использования переменных вместо жестко заданных значений?
Совет: используйте "" "" ... "" "" тройное цитирование, и вам не придется использовать все эти обратные косые черты .. –
Неужели есть исключение, если все откатывается? –
@MartijnPieters yes, его «не все аргументы, преобразованные во время форматирования строки» –