Здравствуйте, помогите с данной задачей пожалуйста
Создать 2 таблицы в Базе Данных
Одна будет хранить текстовые данные(1 колонка)
Другая числовые(1 колонка)
Есть список, состоящий из чисел и слов.
Если элемент списка слово, записать его в соответствующую таблицу, затем посчитать длину слова и записать её в числовую таблицу
Если элемент списка число: проверить, если число чётное записать его в таблицу чисел, если нечётное, то записать во вторую таблицу слово: «нечётное»
Если число записей во второй таблице больше 5, то удалить 1 запись в первой таблице. Если меньше, то обновить 1 запись в первой таблице на «hello»
Ответы (1 шт):
Похоже на задание из школы, университета. Поэтому балуйтесь с SQL-запросами INSERT, UPDATE, DELETE. Учтите, что во время итерации по списку надо будет делать SELECT из таблицы на проверку, что строк < 5. При операциях с DML всегда надо делать commit.
import sqlite3
import random
query1 = 'CREATE TABLE IF NOT EXISTS `WORDS` (`word` TEXT)'
query2 = 'CREATE TABLE IF NOT EXISTS `DIGITS` (`digit` INTEGER)'
# создаем БД на sqlite
with sqlite3.connect('test.db') as connection:
cursor = connection.cursor()
cursor.execute(query1)
cursor.execute(query2)
connection.commit()
cursor.close()
def rnd(n):
seed = random.randint(1, 10)
number = random.randint(0, 100)
return number if seed % 2 else f'txt'*(seed//2)
# генерация элементов списка
elements = [rnd(i) for i in range(50)]
random.shuffle(elements)
# пока что вставляем всё подряд
with sqlite3.connect('test.db') as connection:
cursor = connection.cursor()
for element in elements:
if isinstance(element, str):
cursor.execute(f'INSERT INTO WORDS VALUES ("{element}")')
cursor.execute(f'INSERT INTO DIGITS VALUES ("{len(element)}")')
elif element % 2:
cursor.execute(f'INSERT INTO WORDS VALUES ("нечётное")')
else:
cursor.execute(f'INSERT INTO DIGITS VALUES ("{element}")')
connection.commit()
cursor.close()
# подсчет количества для проверки
with sqlite3.connect('test.db') as connection:
cursor = connection.cursor()
cursor.execute('SELECT COUNT(*) FROM `WORDS`')
result_words = cursor.fetchall()
cursor.execute(query2)
cursor.execute('SELECT COUNT(*) FROM `DIGITS`')
result_digits = cursor.fetchall()
cursor.close()