Optimize database connection management in spider module, fix WebSocket handling and parameter validation.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import pymysql
|
||||
from pymysql.cursors import DictCursor
|
||||
|
||||
class DatabaseManager:
|
||||
_instance = None
|
||||
_connection = None
|
||||
_config = None
|
||||
|
||||
def __new__(cls):
|
||||
if cls._instance is None:
|
||||
cls._instance = super(DatabaseManager, cls).__new__(cls)
|
||||
return cls._instance
|
||||
|
||||
@classmethod
|
||||
def initialize(cls, config):
|
||||
"""初始化数据库配置"""
|
||||
cls._config = config
|
||||
|
||||
@classmethod
|
||||
def get_connection(cls):
|
||||
"""获取数据库连接"""
|
||||
if cls._connection is None or not cls._connection.open:
|
||||
if cls._config is None:
|
||||
raise ValueError("数据库未初始化,请先调用initialize方法设置配置")
|
||||
cls._connection = pymysql.connect(
|
||||
**cls._config,
|
||||
cursorclass=DictCursor
|
||||
)
|
||||
return cls._connection
|
||||
|
||||
@classmethod
|
||||
def close(cls):
|
||||
"""关闭数据库连接"""
|
||||
if cls._connection and cls._connection.open:
|
||||
cls._connection.close()
|
||||
cls._connection = None
|
||||
Reference in New Issue
Block a user