from typing import LiteralString import sqlite3 import json class Record: id: int | None = None name: str | None = "" description: str | None = "" img_path: str | None = "" def __init__(self, id, name, img_path, description): self.id = id self.name = name self.img_path = img_path self.description = description class DB: con = None path = "" def __init__(self, path="AmDB.db"): if path != "": self.con = sqlite3.connect(path) self.cur = self.con.cursor() self.cur.execute( """CREATE TABLE IF NOT EXISTS records ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, path TEXT NOT NULL, description BLOB )""") self.path = path def add_record(self, name="", description="", img_path=""): self.cur.execute( '''INSERT INTO records (name, path, description) VALUES (?, ?, ?)''', (name, img_path, description)) self.con.commit() def edit_record(self, old_name, name="", img_path="", description=""): record = self.get_record_by_name(old_name) if record.name != name: self.cur.execute( 'UPDATE records SET name = ? WHERE name = ?', (name, old_name)) if record.description != description: self.cur.execute( 'UPDATE records SET description = ? WHERE name = ?', (description, old_name)) if record.img_path != img_path: self.cur.execute( 'UPDATE records SET path = ? WHERE name = ?', (img_path, old_name)) self.con.commit() def get_record_by_name(self, name): self.cur.execute('SELECT * FROM records WHERE name=?', (name,)) record = self.cur.fetchone() if record == None: return None return Record(record[0], record[1], record[2], record[3]) def load_records(self): self.cur.execute('''SELECT * FROM records''') records = [] for row in self.cur.fetchall(): new_rec = Record(row[0], row[1], row[2], row[3]) records.append(new_rec) return records def delete_record(self, name): self.cur.execute("DELETE FROM records WHERE name = ?", (name,)) self.con.commit() def close(self): self.con.close() # db_t = DB("AmDB.db") # db_t.add_record(name='Азовское море',description='\tПолузамкнутое море Атлантического океана на востоке Европы, омывающее побережье России и Украины. Самое мелкое море в мире: глубина не превышает 13,5 метров[2], средняя глубина около 7,4 м (по разным оценкам — от 6,8 до 8 м)[3]. \n\tСоединяется с Атлантическим океаном длинной цепочкой проливов и морей: Керченский пролив — Чёрное море — пролив Босфор — Мраморное море — пролив Дарданеллы — Эгейское море — Средиземное море — Гибралтарский пролив. По отдалённости от океана Азовское море является самым континентальным морем планеты. Объём воды — 290 км³[4]. \n\tВ древности Азовского моря не существовало и Дон впадал в Чёрное море в районе современного Керченского пролива. Предполагается, что заполнение акватории Азовского моря произошло около 5600 года до н. э.', img_path='img/azovskoe.jpg') # db_t.close()