python 封装MSSQL数据库操作类
时间: 2025-02-16 07:10:27 浏览: 25
### Python 封装 MSSQL 数据库操作类
为了实现高效且可维护的数据库交互,在 Python 中通常会创建一个专门用于处理 MSSQL 操作的类。这不仅有助于提高代码重用率,还能简化错误处理逻辑并增强安全性。
#### 使用 `pyodbc` 库连接到 MSSQL 并执行查询
```python
import pyodbc
class MsSqlDatabase:
def __init__(connection_string):
"""
初始化数据库连接对象.
参数 connection_string 是包含服务器地址、用户名和密码等信息的标准 ODBC 连接字符串。
"""
self.connection_string = connection_string
def connect(self):
"""建立与 SQL Server 的新连接"""
try:
conn = pyodbc.connect(self.connection_string, timeout=5)
cursor = conn.cursor()
return (conn, cursor)
except Exception as e:
raise ConnectionError(f"无法连接至数据库 {e}") from None
def execute_query(self, query, params=None):
"""执行给定的SQL语句,并返回结果集."""
with self.connect() as (conn, cursor):
try:
if params is not None:
cursor.execute(query, params)
else:
cursor.execute(query)
rows = cursor.fetchall()
# 获取列名作为字典键值对的一部分
columns = [column[0] for column in cursor.description]
results = []
for row in rows:
result_dict = dict(zip(columns, row))
results.append(result_dict)
return results
finally:
cursor.close()
conn.commit()
def close_connection(self, conn):
"""关闭数据库连接"""
if hasattr(conn, 'close'):
conn.close()
```
此段代码展示了如何通过定义一个名为 `MsSqlDatabase` 的类来封装常见的 CRUD 操作[^1]。该类接受一个标准ODBC格式的连接串作为参数初始化实例化对象;提供了方法用来打开/关闭连接以及运行任意形式的 T-SQL 命令或存储过程调用。
对于最佳实践而言:
- **使用上下文管理器**:当涉及到资源分配时(比如文件I/O或者网络套接字),应该总是考虑利用 Python 的上下文管理协议 (`with` 语句),这样可以自动确保即使发生异常也能正确释放资源。
- **参数化查询防止注入攻击**:永远不要拼接未经验证过的用户输入进入 SQL 查询中去,而是采用预编译的方式传递变量,从而有效防范潜在的安全风险。
- **事务控制**:如果业务场景涉及多条相互依赖的操作,则应当启用显式的事务机制以保障数据一致性。
- **日志记录**:适当加入 logging 功能可以帮助追踪程序行为,尤其是在生产环境中遇到问题的时候能够快速定位原因。
阅读全文
相关推荐

















