Это неправильное использование executemany
.Вы можете думать, что он действует как вложенный цикл for
, где он повторяет внешний контейнер (представляющий запрос), а затем повторяет внутренний контейнер, представляющий данные, подлежащие распаковке, в запрос.
Однако,в вашем случае у вас есть только один список, который предположительно содержит строки.Таким образом, внутренний цикл «for» начинает распаковывать символы строки:
data = ['hello', 'something']
for item in data:
for subitem in item:
print(subitem) # this is what it's trying to insert
Это фактический вариант использования для executemany
, где вы хотите распаковать значения внутри внутреннего контейнера:
data = [['hello', 'something'], ['goodbye', 'something_else']]
for item in data:
for subitem in item:
print(subitem) # this is what it's trying to insert
Просто используйте execute
.