现代化的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/
发表评论 取消回复