TypeError: not enough arguments for format string
Пытаюсь сделать запись в бд таким образом
query = 'INSERT INTO users (ip, user, pass) VALUES (%s, %s, %s)'
val = ("1.1.1.1", "user", "pass")
cursor.executemany(query, val)
Но при запуске такая ошибка
я вроде указал, что данные являются строкой, что я делаю не правильно?
Ответы (1 шт):
Автор решения: Андрей Коробейников
→ Ссылка
Как верно заметили в комментариях проблема состоит лишь в том что вы используете executemany - данный метод использует для выполнения сразу нескольких запросов и подразумевает что в val у вас будет что-то вроде
val = [("1.1.1.1", "user", "pass"),
("1.1.1.2", "user2", "pass"),
("1.1.1.3", "user3", "pass"),
...]
таким образом, что бы заработал ваш пример сделайте или
query = 'INSERT INTO users (ip, user, pass) VALUES (%s, %s, %s)'
val = [("1.1.1.1", "user", "pass"),]
cursor.executemany(query, val)
или
query = 'INSERT INTO users (ip, user, pass) VALUES (%s, %s, %s)'
val = ("1.1.1.1", "user", "pass")
cursor.execute(query, val)
Здесь очень подробно и красиво рассмотрены все ньюансы использования данных методов