aicheckv2-api/utils/db_getter.py

67 lines
2.0 KiB
Python
Raw Normal View History

2025-04-11 08:54:28 +08:00
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2023/5/6 9:29
# @File : task.py
# @IDE : PyCharm
# @desc : 任务基础类
import re
import pymysql
from application.settings import SQLALCHEMY_DATABASE_URL
from core.logger import logger
class DBGetter:
def __init__(self):
self.mysql_cursor = None
self.mysql_conn = None
def conn_mysql(self) -> None:
"""
连接系统中配置的 mysql 数据库
"""
try:
connection_string = SQLALCHEMY_DATABASE_URL.split("//")[1]
pattern = r'^(?P<username>[^:]+):(?P<password>[^@]+)@(?P<host>[^:/]+):(?P<port>\d+)/(?P<database>[^/]+)$'
match = re.match(pattern, connection_string)
username = match.group('username')
password = match.group('password')
host = match.group('host')
port = int(match.group('port'))
database = match.group('database')
self.mysql_conn = pymysql.connect(
host=host,
port=port,
user=username,
password=password,
database=database
)
self.mysql_cursor = self.mysql_conn.cursor()
except pymysql.err.OperationalError as e:
logger.error(f"数据库连接失败,{e}")
raise ValueError("数据库连接失败!")
except AttributeError as e:
logger.error(f"数据库链接解析失败,{e}")
raise ValueError("数据库链接解析失败!")
def close_mysql(self) -> None:
"""
关闭 mysql 链接
"""
try:
self.mysql_cursor.close()
self.mysql_conn.close()
except AttributeError as e:
logger.error(f"未连接数据库,无需关闭!,{e}")
raise ValueError("未连接数据库,无需关闭!")
if __name__ == '__main__':
t = DBGetter()
t.conn_mysql()
t.close_mysql()