Загрузка данных


import sqlite3
import random
from dataclasses import dataclass
from tkinter.constants import BROWSE

con = sqlite3.connect(
r'D:\Рабочий стол\Учеба\test.db',
timeout=10.0,
detect_types=0,
isolation_level='DEFERRED',
check_same_thread=True,
factory=sqlite3.Connection,
cached_statements=128,
uri=False
)
con.row_factory = sqlite3.Row
cur = con.cursor()

@dataclass
class User:
    id : int
    name : str
    age : int
cur = con.cursor()

cur.execute("""
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL CHECK(age > 0))
""")

con.commit()

def create_user(name:str, age:int)-> User:
    cur.execute("""INSERT INTO users(name, age)
    VALUES(?,?)
    """,(name, age)
    )
    con.commit()
    return User (None, name, age)

# new_user = create_user("Max", 25)
# new_user = create_user("Cosi", 27)

def get_user(user_id: int) -> User | None:
    row = cur.execute(
        """
        SELECT
            id,
            name,
            age
        FROM
            USers
        WHERE
            id = ?
        """, (user_id,)
    ).fetchone()

    if row is None:
        return None

    return User(
        id = row["id"],
        name = row["name"],
        age = row["age"]
    )
user_two = get_user(7)
print(user_two)


def get_users() -> list[User]:
    row = cur.execute(
        """
        SELECT
            id,
            name,
            age
        FROM
            Users"""
    ).fetchall()

# print(len(rows))

    counter = 0
    for user in rows:
        counter = counter + 1

     print(counter) #количество пользователей

    return  [
        User(
            id = row["id"],
            name = row["name"],
            age = row['age']
        )
        for row in rows
        ]

users = get_users()
for user in users:
    print(user)

# for user in users:
#     print(user)

def update_user(user_id: int, name: str, age: int) -> None:
    cur.execute(
        """
        UPDATE Users
        SET name = ?, age = ?
        WHERE id =?
        """, (name, age, user_id)
    )
    con.commit()

def delete_user(user_id: int) -> None:
    cur.execute(
        """
        DELETE FROM Users
        WHERE id =?
        """,(user_id)
    )
    con.commit()