gui-db/db/__init__.py

82 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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