сохраняю перед добавлением во все бд, закрытие соединения

This commit is contained in:
2026-04-11 12:12:28 +10:00
parent 8de5320b42
commit 8c790b018c
2 changed files with 30 additions and 7 deletions

View File

@@ -459,6 +459,10 @@ class Parserall(BaseModel):
url: HttpUrl url: HttpUrl
promt: str promt: str
@app.post("/add_sources" , summary="Добавление парсинга любого источника")
async def add_sources_all_ist(sources: Parserall):
return wp.add_sources(sources.url, sources.promt)
@app.post("/parser_all" , summary="Запуск процеса парсинга любого источника") @app.post("/parser_all" , summary="Запуск процеса парсинга любого источника")
async def process_parser_all_ist(url: Parserall, background_tasks: BackgroundTasks): async def process_parser_all_ist(url: Parserall, background_tasks: BackgroundTasks):
background_tasks.add_task(start_pars_all_istochnik(str(url.url), url.promt)) background_tasks.add_task(start_pars_all_istochnik(str(url.url), url.promt))

View File

@@ -12,7 +12,7 @@ conn = psycopg2.connect(
options="-c statement_timeout=30000" # таймаут запроса 30 сек options="-c statement_timeout=30000" # таймаут запроса 30 сек
) )
conn.autocommit = True conn.autocommit = True
# работа с базой данных показывания задач work_parser
def create_table(): def create_table():
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute(""" cur.execute("""
@@ -40,7 +40,6 @@ def insert_task(status, source_url=None, source_id=None, priority=0):
task_id = cur.fetchone()[0] task_id = cur.fetchone()[0]
return task_id return task_id
def get_tasks_offset(limit, offset): def get_tasks_offset(limit, offset):
with conn.cursor(cursor_factory=RealDictCursor) as cur: with conn.cursor(cursor_factory=RealDictCursor) as cur:
cur.execute(""" cur.execute("""
@@ -77,7 +76,7 @@ def update_task(task_id, **fields):
cur.execute(f"UPDATE work_parser SET {set_sql} WHERE id = %s;", values) cur.execute(f"UPDATE work_parser SET {set_sql} WHERE id = %s;", values)
return True return True
# Создание и работа с таблицей по созданию и редактированию промтов
def create_table_config_gpt(): def create_table_config_gpt():
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute(""" cur.execute("""
@@ -114,14 +113,15 @@ def get_all_promt():
sources = [{"url": row["url"], "name": row["name"], "promt": row["promt"]} for row in rows] sources = [{"url": row["url"], "name": row["name"], "promt": row["promt"]} for row in rows]
return {"sources": sources} return {"sources": sources}
# Возвращает список всех значений поля name из таблицы config_gpt
def get_all_categories_promt(): def get_all_categories_promt():
"""Возвращает список всех значений поля name из таблицы config_gpt"""
with conn.cursor(cursor_factory=RealDictCursor) as cur: with conn.cursor(cursor_factory=RealDictCursor) as cur:
cur.execute("SELECT name FROM config_gpt") cur.execute("SELECT name FROM config_gpt")
rows = cur.fetchall() rows = cur.fetchall()
return [row["name"] for row in rows] return [row["name"] for row in rows]
# Создание, сохранение и работа с таблицей ошибочных ссылок (error_url)
def create_table_error_url(): def create_table_error_url():
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute(""" cur.execute("""
@@ -133,7 +133,6 @@ def create_table_error_url():
""") """)
print("Таблица error_url создана или уже существует") print("Таблица error_url создана или уже существует")
def add_error_url(source_url: str, error_sources_url: str): def add_error_url(source_url: str, error_sources_url: str):
"""Добавляет запись об ошибке URL""" """Добавляет запись об ошибке URL"""
with conn.cursor() as cur: with conn.cursor() as cur:
@@ -144,7 +143,6 @@ def add_error_url(source_url: str, error_sources_url: str):
""", (source_url, error_sources_url)) """, (source_url, error_sources_url))
return cur.fetchone()[0] return cur.fetchone()[0]
def check_error_url(error_sources_url: str) -> bool: def check_error_url(error_sources_url: str) -> bool:
"""Проверяет, есть ли запись в таблице error_url с таким URL""" """Проверяет, есть ли запись в таблице error_url с таким URL"""
with conn.cursor(cursor_factory=RealDictCursor) as cur: with conn.cursor(cursor_factory=RealDictCursor) as cur:
@@ -157,6 +155,26 @@ def check_error_url(error_sources_url: str) -> bool:
return row is None return row is None
# Создание и работа с таблицей источников add_sources
def create_table_add_sourse():
with conn.cursor() as cur:
cur.execute("""
CREATE TABLE IF NOT EXISTS sourse (
url TEXT PRIMARY KEY,
promt TEXT
);
""")
print("Таблица sourse создана или уже существует")
def add_sources(url: str, promt: str):
with conn.cursor() as cur:
cur.execute("""
INSERT INTO config_gpt (url, promt)
VALUES (%s, %s)
ON CONFLICT (url) DO UPDATE SET
promt = EXCLUDED.promt
""", (url, promt))
conn.commit()
# Пример использования # Пример использования
# if __name__ == "__main__": # if __name__ == "__main__":
@@ -168,3 +186,4 @@ def check_error_url(error_sources_url: str) -> bool:
# }) # })
# # print(get_promt("japan")) # # print(get_promt("japan"))
# # create_table_error_url() # # create_table_error_url()
# create_table_add_sourse()