Здравствуйте, помогите с данной задачей пожалуйста

Создать 2 таблицы в Базе Данных

Одна будет хранить текстовые данные(1 колонка)

Другая числовые(1 колонка)

Есть список, состоящий из чисел и слов.

Если элемент списка слово, записать его в соответствующую таблицу, затем посчитать длину слова и записать её в числовую таблицу

Если элемент списка число: проверить, если число чётное записать его в таблицу чисел, если нечётное, то записать во вторую таблицу слово: «нечётное»

Если число записей во второй таблице больше 5, то удалить 1 запись в первой таблице. Если меньше, то обновить 1 запись в первой таблице на «hello»


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

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

Похоже на задание из школы, университета. Поэтому балуйтесь с 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() 
→ Ссылка