feat: add database test

This commit is contained in:
EstrellaXD
2023-06-15 14:18:57 +08:00
parent 22b3d4caf7
commit e4d34f0e42
3 changed files with 66 additions and 13 deletions

View File

@@ -5,13 +5,18 @@ from module.database.orm import Connector
from module.ab_decorator import locked
from module.database.connector import DataConnector
from module.models import BangumiData
from module.conf import DATA_PATH
logger = logging.getLogger(__name__)
class BangumiDatabase(Connector):
def __init__(self):
super().__init__(table_name="bangumi", data=self.__data_to_db(BangumiData()))
def __init__(self, database: str = DATA_PATH):
super().__init__(
table_name="bangumi",
data=self.__data_to_db(BangumiData()),
database=database,
)
def update_table(self):
self.update.table()
@@ -116,7 +121,7 @@ class BangumiDatabase(Connector):
return [self.__db_to_data(x) for x in all_data]
def search_id(self, _id: int) -> BangumiData | None:
dict_data = self.select.one(_id)
dict_data = self.select.one(conditions={"id": _id})
# condition = {"id": _id}
# dict_data = self._search_data(table_name=self.__table_name, condition=condition)
if dict_data is None:
@@ -134,11 +139,12 @@ class BangumiDatabase(Connector):
# return self.__db_to_data(dict_data)
def match_poster(self, bangumi_name: str) -> str:
condition = {"title_raw": bangumi_name}
condition = {"official_title": bangumi_name}
keys = ["poster_link"]
data = self.select.one(
keys=keys,
condition=condition,
conditions=condition,
combine_operator="INSTR",
)
if not data:
return ""
@@ -187,7 +193,4 @@ class BangumiDatabase(Connector):
if __name__ == "__main__":
with BangumiDatabase() as db:
datas = db.not_added()
for data in datas:
print(data)
# print(db.not_complete())
print(db.match_poster("久保"))

View File

@@ -31,8 +31,9 @@ class Select:
combine_operator: str = "AND",
):
if keys is None:
keys = ["*"]
columns = ", ".join(keys)
columns = "*"
else:
columns = ", ".join(keys)
condition_sql = self.__select_condition(conditions, combine_operator)
self._connector.execute(
f"""
@@ -81,9 +82,13 @@ class Select:
if not conditions:
raise ValueError("No conditions provided.")
if combine_operator not in ["AND", "OR", "INSTR"]:
raise ValueError("Invalid combine_operator, must be 'AND' or 'OR'.")
raise ValueError(
"Invalid combine_operator, must be 'AND' or 'OR' or 'INSTR'."
)
if combine_operator == "INSTR":
condition_sql = f" {combine_operator} {' AND '.join([f'({key} = :{key})' for key in conditions.keys()])}"
condition_sql = f" AND ".join(
[f"INSTR({key}, :{key})" for key in conditions.keys()]
)
else:
condition_sql = f" {combine_operator} ".join(
[f"{key} = :{key}" for key in conditions.keys()]