|
@@ -10,7 +10,6 @@ from .base import DBHelper
|
|
class SQLServerHelper(DBHelper):
|
|
class SQLServerHelper(DBHelper):
|
|
def __init__(self):
|
|
def __init__(self):
|
|
super().__init__()
|
|
super().__init__()
|
|
- self._engines: Dict[str, Engine] = {}
|
|
|
|
self._session_makers: Dict[str, sessionmaker] = {}
|
|
self._session_makers: Dict[str, sessionmaker] = {}
|
|
self._default_config = {
|
|
self._default_config = {
|
|
'driver': 'ODBC Driver 17 for SQL Server',
|
|
'driver': 'ODBC Driver 17 for SQL Server',
|
|
@@ -71,14 +70,12 @@ class SQLServerHelper(DBHelper):
|
|
|
|
|
|
def get_engine(self, database: str, config: Optional[Dict[str, str]] = None) -> Engine:
|
|
def get_engine(self, database: str, config: Optional[Dict[str, str]] = None) -> Engine:
|
|
"""获取或创建数据库引擎"""
|
|
"""获取或创建数据库引擎"""
|
|
- if database not in self._engines:
|
|
|
|
- conn_str = self._build_connection_string(database, config)
|
|
|
|
- engine = create_engine(conn_str, **self._pool_config)
|
|
|
|
- # 预热连接池
|
|
|
|
- with engine.connect() as conn:
|
|
|
|
- conn.execute(text("SELECT 1"))
|
|
|
|
- self._engines[database] = engine
|
|
|
|
- return self._engines[database]
|
|
|
|
|
|
+ conn_str = self._build_connection_string(database, config)
|
|
|
|
+ engine = create_engine(conn_str, **self._pool_config)
|
|
|
|
+ # 预热连接池
|
|
|
|
+ with engine.connect() as conn:
|
|
|
|
+ conn.execute(text("SELECT 1"))
|
|
|
|
+ return engine
|
|
|
|
|
|
def execute_query(self, database: str, query: str, params: Optional[Dict[str, Any]] = None) -> List[Tuple]:
|
|
def execute_query(self, database: str, query: str, params: Optional[Dict[str, Any]] = None) -> List[Tuple]:
|
|
"""执行查询并返回结果"""
|
|
"""执行查询并返回结果"""
|
|
@@ -111,9 +108,6 @@ class SQLServerHelper(DBHelper):
|
|
|
|
|
|
def dispose_all(self) -> None:
|
|
def dispose_all(self) -> None:
|
|
"""释放所有数据库引擎资源"""
|
|
"""释放所有数据库引擎资源"""
|
|
- for engine in self._engines.values():
|
|
|
|
- engine.dispose()
|
|
|
|
- self._engines.clear()
|
|
|
|
self._session_makers.clear()
|
|
self._session_makers.clear()
|
|
|
|
|
|
def __del__(self):
|
|
def __del__(self):
|