python 简单封装个数据库类

#coding:utf-8
import pymysql

class conn():
    def __init__(self):
        self.conn= pymysql.connect(host='localhost',port=3306,user='root',password='',database='wenhuafan',charset='utf8')
        self.cursor=self.conn.cursor()
        
    def __del__(self):
        self.cursor.close()
        self.conn.close()
        class_name = self.__class__.__name__
        # print(class_name, "销毁")

    def exists(self,sql):
        try:
            # 开启事务;
            self.conn.begin()
            self.cursor.execute(sql)
            data =self.cursor.fetchall()
            if not data:
                return False
            else:
                return True
        except Exception as e:
            # 若有异常就回滚;
            self.conn.rollback()
            print(e)
            return False

    def select(self,sql):
        try:
            # 开启事务;
            self.conn.begin()
            self.cursor.execute(sql)
            data =self.cursor.fetchall()
            if not data:
                return False
            else:
                return data
        except Exception as e:
            # 若有异常就回滚;
            self.conn.rollback()
            print(e)
            return False

    def execute(self,sql):
        try:
            # 开启事务;
            self.conn.begin()
            self.cursor.execute(sql)
            # 提交事务;
            self.conn.commit() 
            print('数据成功入库!')
        except Exception as e:
            # 若有异常就回滚;
            self.conn.rollback()
            print(e)

### 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 功能可以帮助追踪程序行为,尤其是在生产环境中遇到问题的时候能够快速定位原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_28928247

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值