feat: 支持初始化mysql表结构

This commit is contained in:
Relakkes 2024-04-18 22:34:51 +08:00
parent 5681dd6925
commit 5d97ffac98
2 changed files with 20 additions and 1 deletions

View File

@ -84,6 +84,7 @@
### 数据保存
- 支持保存到关系型数据库Mysql、PgSQL等
- 执行 `python db.py` 初始化数据库数据库表结构(只在首次执行)
- 支持保存到csv中data/目录下)
- 支持保存到json中data/目录下)

20
db.py
View File

@ -6,6 +6,7 @@ import asyncio
from typing import Dict
from urllib.parse import urlparse
import aiofiles
import aiomysql
import config
@ -62,6 +63,7 @@ async def init_db():
await init_mediacrawler_db()
utils.logger.info("[init_db] end init mediacrawler db connect object")
async def close():
"""
关闭连接池
@ -74,5 +76,21 @@ async def close():
db_pool.close()
async def init_table_schema():
"""
用来初始化数据库表结构请在第一次需要创建表结构的时候使用多次执行该函数会将已有的表以及数据全部删除
Returns:
"""
utils.logger.info("[init_table_schema] begin init mysql table schema ...")
await init_mediacrawler_db()
async_db_obj: AsyncMysqlDB = media_crawler_db_var.get()
async with aiofiles.open("schema/tables.sql", mode="r") as f:
schema_sql = await f.read()
await async_db_obj.execute(schema_sql)
utils.logger.info("[init_table_schema] mediacrawler table schema init successful")
await close()
if __name__ == '__main__':
asyncio.run(init_db())
asyncio.get_event_loop().run_until_complete(init_table_schema())