Таблица Sqlite разбивает строку на символы

Я делаю Телеграмм бота на Telebot и когда я пытаюсь добавить строку в бд, её добавляет, но разделённую на символы.

Это код

Вот так добавляет строку бд

Как должно добавлять

Буду очень благодарен если поможете решить эту проблему


Ответы (1 шт):

Автор решения: gil9red

А вы знаете как работает executemany? В вашем случае executemany на каждый символ строки создавал запрос INSERT INTO, который передавался в поле disc

Если вам нужно вставить одну строку в базу, то используйте просто execute, но оберните textdb в кортеж или список:

cursor.execute("<ваш sql запрос>", (textdb,))

PS.

У execute(sql, parameters=()) второй параметр принимает кортеж, но ему на самом деле сойдет любой объект с поддержкой итерацией (строки тоже подходят из-за чего, если передавать как есть, то код поведет себя не так как ожидалось). Поэтому, нужно было обернуть textdb в кортеж на 1 элемент (textdb,) - тут важна запятая, т.к. в случаи (textdb) это не будет кортежом.

Если несколько параметров передавать, то это выглядит адекватнее, типа: cursor.execute("<ваш sql запрос (?, ?, ?)", (textdb, result, abc))

→ Ссылка