Не получается внести данные в таблицу sqlite3(No such column(Элементы массива))

NikitaSel

Новичок
Пользователь
Апр 10, 2020
5
0
1
from sqlite3 import *
base = connect("BASE.db")
cursor = base.cursor()

LIST10 = list(cursor.execute("""SELECT Номер10 FROM Words"""))
LIST11 = list(cursor.execute("""SELECT Номер11 FROM Words"""))
LIST12 = list(cursor.execute("""SELECT Номер12 FROM Words"""))
LIST15 = list(cursor.execute("""SELECT Номер15 FROM Words"""))
cursor.execute("""DELETE FROM Words""")

def write_funck(list_num,num):
INP = None
while INP != '':
INP = input('Введите слово для номера 10: ')
list_num.append(INP.lower())
list_num.remove('')
word_set = set(list_num)
list_num = list(word_set)


def main():
choose = int(input('выберете номер задания(10,11,12,15): '))
if choose == 10:
write_funck(LIST10,choose)
elif choose == 11:
write_funck(LIST11,choose)
elif choose == 12:
write_funck(LIST12,choose)
else:
write_funck(LIST15,choose)

main()
cursor.execute(f"""INSERT INTO Words(Номер10) VALUES({LIST10})""")
cursor.execute(f"""INSERT INTO Words(Номер11) VALUES({LIST11})""")
cursor.execute(f"""INSERT INTO Words(Номер12) VALUES({LIST12})""")
cursor.execute(f"""INSERT INTO Words(Номер15) VALUES({LIST15})""")
base.commit()
cursor.close()
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
sqlite3(No such column(Элементы массива)) - это значит что в таблице нет такого столбца.
Вот тут есть пример вставки данных в таблицу:
https://younglinux.info/sqlite/insert
 

NikitaSel

Новичок
Пользователь
Апр 10, 2020
5
0
1
sqlite3(No such column(Элементы массива)) - это значит что в таблице нет такого столбца.
Вот тут есть пример вставки данных в таблицу:
https://younglinux.info/sqlite/insert
Так проблема в том,что я добавляю в столбец(Номер10) массив состоящий из слов.Но в качестве столбцов программа использует элементы массива, и я не понимаю почему.Вроде по синтаксису Insert сделан правильно.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
По коду не понятно какие столбцы у вас в таблице (сколько их и какого они типа). Покажите код которым создаете таблицу.
 

NikitaSel

Новичок
Пользователь
Апр 10, 2020
5
0
1
По коду не понятно какие столбцы у вас в таблице (сколько их и какого они типа). Покажите код которым создаете таблицу.
1586532851687.png
1586532720664.png
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Список в базу можно добавить в виде строки (т. к. в виде списка не примет):
Python:
from sqlite3 import *
base = connect('BASE.db')
cursor = base.cursor()
l = ['1', '2', '3']
cursor.execute("""INSERT INTO Words ('Номер10') VALUES (?)""", (str(l),))
base.commit()
base.close()
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Или можно список объединить в строку с помощью join и записать, а при получении разделять через split:
Запись:

Python:
from sqlite3 import *
base = connect('BASE.db')
cursor = base.cursor()
l = ['1', '2', '3']
x = ",".join(l)
cursor.execute("""INSERT INTO Words ('Номер10') VALUES (?) """, (x,))
base.commit()
base.close()

Чтение:
Python:
from sqlite3 import *
base = connect('BASE.db')
cursor = base.cursor()
c = cursor.execute("""SELECT Номер10 FROM Words WHERE rowid=1""")
l = c.fetchone()
y = l[0].split(',')
print(y)

Запись в определенный ряд таблицы:
Python:
base = connect('BASE.db')
cursor = base.cursor()
l = ['1', '2', '3']
x = ",".join(l)
cursor.execute("""UPDATE Words SET 'Номер10' = (?) WHERE rowid=1""", (x,))
base.commit()
base.close()
 

NikitaSel

Новичок
Пользователь
Апр 10, 2020
5
0
1
Список в базу можно добавить в виде строки (т. к. в виде списка не примет):
Python:
from sqlite3 import *
base = connect('BASE.db')
cursor = base.cursor()
l = ['1', '2', '3']
cursor.execute("""INSERT INTO Words ('Номер10') VALUES (?)""", (str(l),))
base.commit()
base.close()
Спасибо вам огромное)))))
 

Форум IT Специалистов