82 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 |