Как отдельно вставить значения из массива в строку sqlite3

У меня есть функция которая передаёт название таблицы и массив из 5 элементов, когда я пытаюсь передать массив то sqlite ругается что я передаю всего 2 элемента когда нужно 6. Есть ли какой-то способ записать массив по отдельности в каждую строчку не создавая кучу переменных? Заранее спасибо

async def add_item(ctg, info):
    with sqlite3.connect('db_items.db') as db:
        print(info)
        cursor = db.cursor()
        cursor.execute(f"SELECT id FROM {ctg}")
        id = int(cursor.fetchall()[-1][0])# Это последний предмета в БД, он кастомный так-что вместо PRIMARY KEY я использую TEXT
        print(id)
        print(info)
        cursor.execute(f"INSERT INTO {ctg} VALUES(?, ?, ?, ?, ?, ?)", (str(id+1), [info]))# Вот тут я передаю одну переменную и массив, и тут ругается sqlite
        db.commit()

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

Автор решения: White Marlin

Если вы хотите добавить новую запись, это делается примерно так.

con = sqlite3.connect('db_items.db')

def add_item(ctg, info: list):
    cur = con.cursor()
    cur.execute(f"INSERT INTO {ctg} (col_name, col_name, col_name, col_name, col_name, col_name) VALUES (?, ?, ?, ?, ?, ?)", (info[0], info[1], info[2], info[3], info[4], info[4], info[5])
    con.commit()
    cur.close()
→ Ссылка
Автор решения: catmoska

Чтобы не писать это:

info[0], info[1], info[2], info[3], info[4], info[4], info[5]'

можно сделать так:

cur.execute(f"INSERT INTO {ctg} (col_name, col_name, col_name, col_name, col_name, col_name) 
VALUES (?, ?, ?, ?, ?, ?)", tuple(info))
→ Ссылка