mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-05-05 03:12:47 +08:00
feat: add database test
This commit is contained in:
@@ -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("久保"))
|
||||
|
||||
@@ -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()]
|
||||
|
||||
Reference in New Issue
Block a user