1
0
mirror of https://github.com/MarkParker5/STARK.git synced 2025-07-02 22:36:54 +02:00
Files
STARK/General/DataBase/DataBase.py

67 lines
2.2 KiB
Python
Raw Normal View History

2020-10-04 21:18:36 +03:00
import sqlite3
from sqlite3 import Error
2021-02-07 20:20:48 +02:00
import config
2020-10-04 21:18:36 +03:00
def sqlite(func):
def wrapper(self, *args):
2020-10-04 21:18:36 +03:00
result = None
try:
2021-02-07 20:20:48 +02:00
connect = sqlite3.connect(config.db_name)
2020-10-04 21:18:36 +03:00
cursor = connect.cursor()
result = func(self, cursor, *args)
2020-10-04 21:18:36 +03:00
connect.commit()
except Error as er:
print('SQLite error: %s' % (' '.join(er.args)))
print("Exception class is: ", er.__class__)
print('SQLite traceback: ')
finally:
connect.close()
return result
return wrapper
class DataBase:
@sqlite
def __init__(self, cursor, table_name, columns = None):
self.table_name = table_name
if not cursor.execute(f'select * from sqlite_master WHERE type = "table" AND name = "{self.table_name}"').fetchall():
2020-10-04 21:18:36 +03:00
if columns:
cursor.execute(f'create table if not exists {self.table_name}(id integer PRIMARY KEY, {", ".join(columns)})')
self.columns = ['id',]+columns
2020-10-04 21:18:36 +03:00
else:
self.columns = [properties[1] for properties in cursor.execute(f'pragma table_info({self.table_name})').fetchall()]
2020-10-04 21:18:36 +03:00
@sqlite
def all(self, cursor):
rows = cursor.execute(f'select * from {self.table_name}').fetchall()
2020-10-04 21:18:36 +03:00
data = []
for row in rows:
dict = {}
for i, value in enumerate(row):
dict[self.columns[i]] = value
2020-10-04 21:18:36 +03:00
data.append(dict)
return data
@sqlite
def where(self, cursor, condition):
return cursor.execute(f'select * from {self.table_name} where {condition}')
2020-10-04 21:18:36 +03:00
@sqlite
def count(self, count):
return len(self.all())
2020-10-04 21:18:36 +03:00
@sqlite
def update(self, cursor, values, where):
2020-10-04 21:18:36 +03:00
updates = " ".join([f'{key} = "{value}"' for key, value in values.items()])
cursor.execute(f'update {self.table_name} set {updates} where {where}')
2020-10-04 21:18:36 +03:00
@sqlite
def insert(self, cursor, values):
2020-10-04 21:18:36 +03:00
values = ['"'+v+'"' for v in values]
cursor.execute(f'insert into {self.table_name}({", ".join(self.columns[1:])}) values({", ".join(values)})')
2020-10-04 21:18:36 +03:00
@sqlite
def drop(self, cursor):
cursor.execute(f'drop table if exists {self.table_name}')