python封装读取数据库

现代化的Web应用离不开数据库支持,而Python在处理数据库方面有着出色的表现。Python提供了许多成熟的数据库接口,如MySQLdb、pymysql、sqlite3等,这些接口可以在Python中以面向对象的方式来操作数据库,非常方便、快捷且易扩展。

然而,在实际项目中,我们使用这些接口时,会遇到一些问题:

1. 操作繁琐:我们需要编写大量的SQL语句,对数据库CRUD的操作都需要手写,这使得编写和维护代码变得繁琐,降低了开发效率。

2. 代码冗余:同样的操作在不同的模块或函数中会重复出现,代码变得冗长而难以维护。

3. 安全问题:由于我们直接传入SQL语句,如果使用不当,可能会导致SQL注入攻击等安全问题。

因此,我们可以使用面向对象编程中的封装概念来解决这些问题,将数据库操作的细节封装到一个类中,对外提供简单的API接口,使得模块之间的调用变得简单、安全,并且提高代码的可读性和可维护性。

接下来,我们来自己手写一个简单的数据库操作类,以MySQL为例,实现与数据库的连接、CRUD等常用操作。代码如下:

```python

import pymysql

from typing import List, Dict

class MySQLConnector:

def __init__(self, host, username, password, database_name, port=3306):

'''

初始化数据库连接配置

'''

self.conn = pymysql.Connect(

host=host,

user=username,

password=password,

database=database_name,

port=port

)

def execute_query(self, query:str) -> List[Dict]:

'''

执行查询操作,并返回结果

'''

with self.conn.cursor() as cursor:

cursor.execute(query)

result_set = cursor.fetchall()

result = [dict(zip([column[0] for column in cursor.description], row)) for row in result_set]

return result

def execute_statement(self, statement:str) -> int:

'''

执行SQL语句,并返回影响的行数

'''

with self.conn.cursor() as cursor:

row_count = cursor.execute(statement)

self.conn.commit()

return row_count

def __del__(self):

'''

关闭数据库连接

'''

self.conn.close()

```

在上述代码中,我们通过pymysql模块连接数据库,并封装了execute_query和execute_statement方法来执行查询和SQL语句操作,同时,在对象销毁时会关闭数据库连接,从而保证安全性。

接下来,我们可以使用这个类来进行数据库操作,如执行SQL语句、查询等。例如,执行查询操作并打印查询结果的代码如下:

```python

def main():

db_config = {

'host': 'localhost',

'username': 'root',

'password': '123456',

'database_name': 'test'

}

connector = MySQLConnector(**db_config)

result = connector.execute_query('select * from student')

print(result)

if __name__ == '__main__':

main()

```

通过这种方式,我们简化了操作,提高了代码的可读性、可维护性和安全性。同时,这种方式也可以扩展到其他类型的数据库操作,如sqlite3、PostgreSQL等。

总结:

1. 封装是面向对象编程的基本概念之一,将一些复杂的功能模块的实现过程隐藏在内部,对外只暴露必要的API,降低了程序的复杂度,提高了代码的可读性、可维护性和安全性。

2. Python中,我们可以通过MySQLdb、pymysql、sqlite3等数据接口来实现与数据库的连接和操作,同时,我们也可以进行封装,让我们的代码更加简洁、易读。

3. 数据库操作是Web开发中的关键步骤之一,学习数据库的操作和封装是一项必须的技能,掌握这个技能可以让我们更好地实现Web应用,并提高开发效率。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(11) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部