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()