54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
class Database():
|
|
def __init__(self):
|
|
pass
|
|
|
|
def close(self):
|
|
pass
|
|
|
|
def query(self, query: str, parameters: list=None) -> tuple[int, list[tuple]]:
|
|
pass
|
|
|
|
def select(self, table: str, columns: list[str]=None, where: list[dict]=None) -> list[tuple]:
|
|
query_string = "SELECT {columns} FROM {table}{where}".format(
|
|
columns = "*" if columns is None else ",".join(columns),
|
|
table = table,
|
|
where = self.__generate_basic_where_clause(where) if not where is None else ""
|
|
)
|
|
|
|
return self.query(query_string, [element["value"] for element in where] if not where is None else None)[1]
|
|
|
|
def insert(self, table: str, columns: list[str], values: list) -> int:
|
|
query_string = "INSERT INTO {table} ({columns}) VALUES ({values})".format(
|
|
table = table,
|
|
columns = ",".join(columns),
|
|
values = ("?," * len(values))[:-1]
|
|
)
|
|
|
|
return self.query(query_string, values)[0]
|
|
|
|
def update(self, table: str, columns: list[str], values: list, where: list[dict]=None) -> int:
|
|
query_string = "UPDATE {table} SET {set_rules}{where}".format(
|
|
table = table,
|
|
set_rules = ",".join([element + "=?" for element in columns]),
|
|
where = self.__generate_basic_where_clause(where) if not where is None else ""
|
|
)
|
|
|
|
return self.query(query_string, values)[0]
|
|
|
|
def delete(self, table: str, where: list[dict]=None) -> int:
|
|
query_string = "DELETE FROM {table}{where}".format(
|
|
table = table,
|
|
where = self.__generate_basic_where_clause(where) if not where is None else ""
|
|
)
|
|
|
|
return self.query(query_string)[0]
|
|
|
|
def __generate_basic_where_clause(self, where: list[dict]):
|
|
return " WHERE {clauses}".format(
|
|
clauses = "".join([
|
|
element["name"] + " " + element["compare"] + " ?" + (" " + element["boolean_op"] + " " if "boolean_op" in element else "")
|
|
for element in where
|
|
])
|
|
)
|
|
|