python sqlite3. Executemany вводит слово в таблицу по буквам

Ситуация следующая. Я сделал простую таблицу, в которой есть два столбца - id и cat (category).

Пользователь вводит слово cat, после чего слово помещается в таблицу.

Проблема - слово помещается в таблице не целиком, а по буквам.

input_text = input()
first_word = re.findall(r'\w+', input_text)[0]
two_word = re.findall(r'\w+', input_text)[1]

if first_word == 'new':
        if two_word == 'cat':
            new_category = re.findall(r'\w+', input_text)[2]
            cur.executemany("INSERT INTO category (cat) VALUES(?);", new_category)
            print("Вы создали новую категорию - " + new_category)

И результат следующий:

введите сюда описание изображения

Т.е. "new cat medicina" создает новую категорию. all cat - выводит все категории.

Как я ожидал, результат должен быть таким:

[(1, 'medicina')]

Надеюсь, я правильно разъяснил свой вопрос. Пожалуйста, помогите чем можете.


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

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

Нашёл решение, хоть и через костыль. Раз программа считает new_category множеством букв, то я решил объеденить всё это с помощью join. И вместо executemany сделал execute.

new_category = re.findall(r'\w+', input_text)[2]
my_list = [''.join(new_category)]
cur.execute("INSERT INTO category (cat) VALUES ( ? );", my_list)
print("Вы создали новую категорию - " + new_category)

По итогу нужный результат:

введите сюда описание изображения

→ Ссылка