当前位置:首页 > 行业动态 > 正文

python 数据库封装_转封装管理

Python数据库封装是一种将数据库操作封装成Python类或函数的方法,以简化数据库的使用和管理。转封装管理则是指将已有的封装进行进一步的封装或转换,以满足特定需求或提高代码的可维护性和可扩展性。

Python 数据库封装是一种将数据库操作封装到 Python 类中的方法,以便在应用程序中更易于使用和管理,转封装管理是指将这些封装的数据库操作转换为更高级别的抽象,以便于在应用程序中使用。

python 数据库封装_转封装管理  第1张

1、创建数据库连接类

我们需要创建一个数据库连接类,用于存储数据库连接信息和执行数据库操作,这个类可以包含以下方法:

初始化方法:用于设置数据库连接信息,如主机、端口、用户名、密码等。

连接方法:用于建立与数据库的连接。

关闭方法:用于关闭与数据库的连接。

import pymysql
class DatabaseConnection:
    def __init__(self, host, port, user, password, db):
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.db = db
        self.connection = None
    def connect(self):
        self.connection = pymysql.connect(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            db=self.db
        )
    def close(self):
        if self.connection:
            self.connection.close()
            self.connection = None

2、创建数据库操作类

我们需要创建一个数据库操作类,用于执行具体的数据库操作,如查询、插入、更新和删除,这个类可以包含以下方法:

初始化方法:用于设置数据库连接对象。

查询方法:用于执行查询操作并返回结果。

插入方法:用于执行插入操作。

更新方法:用于执行更新操作。

删除方法:用于执行删除操作。

class DatabaseOperations:
    def __init__(self, connection):
        self.connection = connection
    def query(self, sql):
        cursor = self.connection.cursor()
        cursor.execute(sql)
        result = cursor.fetchall()
        cursor.close()
        return result
    def insert(self, sql):
        cursor = self.connection.cursor()
        cursor.execute(sql)
        self.connection.commit()
        cursor.close()
    def update(self, sql):
        cursor = self.connection.cursor()
        cursor.execute(sql)
        self.connection.commit()
        cursor.close()
    def delete(self, sql):
        cursor = self.connection.cursor()
        cursor.execute(sql)
        self.connection.commit()
        cursor.close()

3、使用封装后的数据库操作

我们可以在应用程序中使用封装后的数据库操作类来执行数据库操作,我们可以创建一个用户表,并插入一条用户记录。

创建数据库连接对象
connection = DatabaseConnection("localhost", 3306, "root", "password", "test")
connection.connect()
创建数据库操作对象
operations = DatabaseOperations(connection)
创建用户表
operations.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")
插入一条用户记录
operations.insert("INSERT INTO users (name, age) VALUES ('张三', 25)")
查询用户表
result = operations.query("SELECT * FROM users")
print(result)
关闭数据库连接
connection.close()

通过以上步骤,我们成功地将数据库操作封装到了 Python 类中,并在应用程序中使用了这些封装后的数据库操作,这样,我们可以更方便地管理和重用数据库操作代码。

下面是一个简单的介绍,用于展示如何用Python封装数据库操作,并实现封装管理。

序号 操作 封装方法 参数 返回值 备注
1 初始化数据库连接 __init__ host,port,user,passwd,db,charset,cursorclass 创建数据库连接和游标对象,初始化类实例
2 执行查询 query sql,args,fetchall 查询结果 根据传入的参数执行SQL查询,可以获取全部或单条记录
3 提交事务 commit 提交数据库事务,用于确认更改(如insert、update操作)
4 回滚事务 rollback 如果发生错误,回滚所有未提交的事务
5 关闭数据库连接 closedb 关闭游标和数据库连接,确保资源被正确释放
6 创建游标 cursor 游标对象 使用当前连接创建并返回游标,用于执行SQL命令
7 执行SQL命令 execute sql,args 受影响的行数 在游标上执行SQL命令,可以传入参数进行占位

以下是基于上述介绍的一个简单的封装类示例:

import pymysql
from pymysql.cursors import DictCursor
class DatabaseUtils:
    def __init__(self, host=None, port=0, user=None, passwd=None, db=None, charset='utf8'):
        self.conn = pymysql.connect(host=host,
                                    port=port,
                                    user=user,
                                    passwd=passwd,
                                    db=db,
                                    charset=charset,
                                    cursorclass=DictCursor)
        self.cursor = self.conn.cursor()
    
    def query(self, sql, args=None, fetchall=True):
        self.cursor.execute(sql, args=args)
        if fetchall:
            return self.cursor.fetchall()
        else:
            return self.cursor.fetchone()
    
    def commit(self):
        self.conn.commit()
    
    def rollback(self):
        self.conn.rollback()
    
    def closedb(self):
        self.cursor.close()
        self.conn.close()
使用示例
db_helper = DatabaseUtils(host='localhost', user='root', passwd='password', db='test_db')
try:
    # 查询数据
    result = db_helper.query("SELECT * FROM table_name WHERE id = %s", (1,))
    for row in result:
        print(row)
    # 提交事务
    db_helper.commit()
except Exception as e:
    # 发生错误时回滚
    db_helper.rollback()
finally:
    # 关闭数据库连接
    db_helper.closedb()

在上述示例中,DatabaseUtils 类封装了数据库连接、查询、事务提交和回滚、关闭连接等操作,使用时,只需实例化该类并提供数据库配置信息,然后调用相应的方法即可执行数据库操作,在结束时,确保调用commit 或rollback 来处理事务,并使用closedb 方法关闭数据库连接。

0