Я использую Python3 версию mysql -коннектора и пытаюсь использовать функцию executemany.
Мой код выглядит так:
database = mysql.connector.connect(
host='localhost',
user='user',
password='test',
database='test_database'
)
cursor = database.cursor()
categories = ['Test1', 'Test 2']
stmt = "INSERT INTO categories (name) VALUES (%s)"
cursor.executemany(stmt, categories)
My Таблица содержит только один столбец, и это строковый столбец с именем name.
Я попытался использовать записи в списке в качестве кортежа, я изменил оператор вставки так:
stmt = "INSERT INTO categories (name) VALUES ('%s')"
Итак Я в основном добавил одинарные кавычки в заполнитель% s. Я также пытался заменить% s на? но это также не сработало.
Из-за соглашений о форматировании Python3 функция единственного исполнения работает, когда я использую это:
stmt = "INSERT INTO categories (name) VALUES ('{}')".format('Test1')
К сожалению, функции executemany нужен второй аргумент поэтому я не могу использовать функцию .format.
Это мой рабочий пример с обычной функцией исполнения:
database = mysql.connector.connect(
host='localhost',
user='user',
password='test',
database='test_database'
)
cursor = database.cursor()
categories = ['Test1', 'Test2']
for category in categories:
cursor.execute("INSERT INTO categories (name) VALUES ('{}')".format(category))
database.commit()
Редактировать:
Я прочитал официальная документация . Я скопировал и вставил код и изменил его на мои параметры, но он все еще не работает.
categories = [('Test1'),('Test2'),]
stmt = "INSERT INTO categories (name) VALUES (%s)"
cursor.executemany(stmt, categories)