|
@@ -41,7 +41,7 @@ class SQLServerHelper(DBHelper):
|
|
|
)
|
|
|
|
|
|
def _build_connection_string(
|
|
|
- self, database: str, config: Optional[Dict[str, str]] = None
|
|
|
+ self, database: str, config: Optional[Dict[str, str]] = None
|
|
|
) -> str:
|
|
|
"""构建连接字符串"""
|
|
|
conn_config = self._default_config.copy()
|
|
@@ -65,7 +65,7 @@ class SQLServerHelper(DBHelper):
|
|
|
f"SERVER={conn_config['server']}",
|
|
|
f"DATABASE={conn_config['database'] if 'database' in conn_config else database}",
|
|
|
"CHARSET=UTF-8",
|
|
|
- "TDS_Version=7.3",
|
|
|
+ f"TDS_VERSION={conn_config['tds_version'] if 'tds_version' in conn_config else '7.0'}",
|
|
|
]
|
|
|
conn_parts.extend(auth_params)
|
|
|
|
|
@@ -76,7 +76,7 @@ class SQLServerHelper(DBHelper):
|
|
|
return conn_url
|
|
|
|
|
|
def get_engine(
|
|
|
- self, database: str, config: Optional[Dict[str, str]] = None
|
|
|
+ self, database: str, config: Optional[Dict[str, str]] = None
|
|
|
) -> Engine:
|
|
|
"""获取或创建数据库引擎"""
|
|
|
conn_str = self._build_connection_string(database, config)
|
|
@@ -87,7 +87,7 @@ class SQLServerHelper(DBHelper):
|
|
|
return engine
|
|
|
|
|
|
def execute_query(
|
|
|
- self, database: str, query: str, params: Optional[Dict[str, Any]] = None
|
|
|
+ self, database: str, query: str, params: Optional[Dict[str, Any]] = None
|
|
|
) -> List[Tuple]:
|
|
|
"""执行查询并返回结果"""
|
|
|
with self.session_scope(database) as session:
|
|
@@ -95,7 +95,7 @@ class SQLServerHelper(DBHelper):
|
|
|
return [tuple(row) for row in result.fetchall()]
|
|
|
|
|
|
def execute_non_query(
|
|
|
- self, database: str, query: str, params: Optional[Dict[str, Any]] = None
|
|
|
+ self, database: str, query: str, params: Optional[Dict[str, Any]] = None
|
|
|
) -> int:
|
|
|
"""执行非查询操作(如INSERT, UPDATE, DELETE)"""
|
|
|
with self.session_scope(database) as session:
|
|
@@ -103,7 +103,7 @@ class SQLServerHelper(DBHelper):
|
|
|
return result.rowcount
|
|
|
|
|
|
def execute_scalar(
|
|
|
- self, database: str, query: str, params: Optional[Dict[str, Any]] = None
|
|
|
+ self, database: str, query: str, params: Optional[Dict[str, Any]] = None
|
|
|
) -> Any:
|
|
|
"""执行查询并返回第一行第一列的值"""
|
|
|
with self.session_scope(database) as session:
|
|
@@ -112,10 +112,10 @@ class SQLServerHelper(DBHelper):
|
|
|
return row[0] if row else None
|
|
|
|
|
|
def execute_procedure(
|
|
|
- self,
|
|
|
- database: str,
|
|
|
- procedure_name: str,
|
|
|
- params: Optional[Dict[str, Any]] = None,
|
|
|
+ self,
|
|
|
+ database: str,
|
|
|
+ procedure_name: str,
|
|
|
+ params: Optional[Dict[str, Any]] = None,
|
|
|
) -> List[Tuple]:
|
|
|
"""执行存储过程"""
|
|
|
params = params or {}
|