python类封装数据库

Python是一种流行的编程语言,可以轻松地访问各种数据库。在大多数情况下,开发人员需要通过编写许多SQL语句来访问数据库,从而导致重复的代码和出现错误的机会。这时,可以使用面向对象编程的思想,封装一个数据库操作类,通过类的封装来提高程序的可读性和可维护性。

下面我们来封装一个基础的MySQL数据库操作类,包含对数据库的增删改查方法。

1. 首先,我们需要安装Python的mysql-connector库,可以通过pip命令来安装。

```

pip install mysql-connector-python

```

2. 为了方便直接操作数据库,我们需要在初始化方法中连接数据库,并设置好数据库信息和编码格式。

```python

import mysql.connector

class MysqlUtil():

def __init__(self, host, port, user, password, database):

self.host = host

self.port = port

self.user = user

self.password = password

self.database = database

self.conn = mysql.connector.connect(

host=self.host,

port=self.port,

user=self.user,

password=self.password,

database=self.database,

charset='utf8'

)

self.cursor = self.conn.cursor()

```

3. 增加记录操作方法insert_one,采用参数化操作,插入单条记录。

```python

def insert_one(self, table_name, data):

'''

:param table_name: 表名

:param data: 数据,类型为dict

:return:

'''

columns = []

values = []

for key in data:

columns.append(key)

values.append(data[key])

column_str = ','.join(columns)

placeholder_str = ','.join(['%s'] * len(values))

sql = f"insert into {table_name} ({column_str}) values ({placeholder_str})"

self.cursor.execute(sql, tuple(values))

self.conn.commit()

```

4. 更新记录操作方法update_one,同样采用参数化操作。

```python

def update_one(self, table_name, data, condition):

'''

:param table_name: 表名

:param data: 要更新的数据,类型为dict

:param condition: 更新条件,类型为dict

:return:

'''

set_list = []

for key in data:

set_list.append("`" + key + "`=%s")

set_str = ','.join(set_list)

where_list = []

for key in condition:

where_list.append("`" + key + "`=%s")

where_str = ' and '.join(where_list)

values = list(data.values()) + list(condition.values())

sql = f"update {table_name} set {set_str} where {where_str}"

self.cursor.execute(sql, tuple(values))

self.conn.commit()

```

5. 删除记录操作方法delete_one,同样采用参数化操作。

```python

def delete_one(self, table_name, condition):

'''

:param table_name: 表名

:param condition: 删除条件,类型为dict

:return:

'''

where_list = []

for key in condition:

where_list.append("`" + key + "`=%s")

where_str = ' and '.join(where_list)

values = [v for v in condition.values()]

sql = f"delete from {table_name} where {where_str}"

self.cursor.execute(sql, tuple(values))

self.conn.commit()

```

6. 查询记录操作方法select_one,只查询一条记录。

```python

def select_one(self, table_name, condition):

'''

:param table_name: 表名

:param condition: 查询条件,类型为dict

:return: 返回查询结果

'''

where_list = []

for key in condition:

where_list.append("`" + key + "`=%s")

where_str = ' and '.join(where_list)

values = [v for v in condition.values()]

sql = f"select * from {table_name} where {where_str} limit 1"

self.cursor.execute(sql, tuple(values))

result = self.cursor.fetchone()

return result

```

7. 查询记录操作方法select_all,查询所有符合条件的记录。

```python

def select_all(self, table_name, condition=None):

'''

:param table_name: 表名

:param condition: 查询条件,类型为dict

:return: 返回查询结果

'''

if condition is None:

sql = f"select * from {table_name}"

self.cursor.execute(sql)

else:

where_list = []

for key in condition:

where_list.append("`" + key + "`=%s")

where_str = ' and '.join(where_list)

values = [v for v in condition.values()]

sql = f"select * from {table_name} where {where_str}"

self.cursor.execute(sql, tuple(values))

result = self.cursor.fetchall()

return result

```

以上就是一个基础的MySQL数据库操作类,包含增删改查方法。在实际项目中,我们可以进一步封装这个基础类,增加事务处理、分页等常用功能。

当我们使用类封装数据库时,需要注意以下几点:

- 尽量使用参数化操作,以避免SQL注入攻击。

- 通过封装可以提高程序的可读性和可维护性。

- 数据库连接是比较耗时的操作,需要注意连接池的使用。

- 在使用完数据库连接后,一定要关闭连接。

- 小心使用事务,在事务失败时需要及时回滚。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(43) 打赏

评论列表 共有 0 条评论

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