python mysql数据库操作封装

Python是一种高级编程语言,因为它易学易用、生成代码简介、可读性好,而成为众多开发者喜爱的语言之一。同时,Python还有许多优秀的第三方库,例如pymysql,它是Python和MySQL之间的接口,拥有许多有用的功能,能够方便的操作MySQL数据库。本文将结合实际案例,探讨如何封装Python MySQL数据库操作。

**1、安装pymysql库**

Python封装MySQL,首先需要安装pymysql库。因为pymysql是Python连接mysql的一个库,该库可实现多种形式的连接,所以使用该库,才能支持完整的连接调用。我们可以使用pip命令方便地安装它。在终端命令行窗口中输入下面的命令:

```

pip install pymysql

```

**2、封装MySQL基础操作**

在具体项目中,我们需要使用Python封装MySQL基础操作,这就意味着要将MySQL数据连接、查询、插入、修改和删除等最基础的操作封装到Python代码中。这些实现的具体细节可以根据单个业务来确定。下面是一个示例,可供参考。

```

import pymysql

class MysqlConn:

# 初始化数据库连接参数

def __init__(self, host, port, user, password, database, charset='utf8'):

self.host = host

self.port = port

self.user = user

self.password = password

self.database = database

self.charset = charset

# 数据库连接

def connect(self):

self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password, database=self.database, charset=self.charset)

self.cur = self.conn.cursor()

# 获取单条数据

def get_one(self, sql):

res = None

try:

res = self.cur.execute(sql)

res = self.cur.fetchone()

except Exception as e:

print('get_one error:', e)

finally:

self.close()

return res

# 获取多条数据

def get_all(self, sql):

res = None

try:

res = self.cur.execute(sql)

res = self.cur.fetchall()

except Exception as e:

print('get_all error:', e)

finally:

self.close()

return res

# 数据插入

def insert(self,sql):

flag = False

try:

self.cur.execute(sql)

self.conn.commit()

flag = True

except Exception as e:

print('insert error:', e)

self.conn.rollback()

finally:

self.close()

return flag

# 数据更新

def update(self,sql):

flag = False

try:

self.cur.execute(sql)

self.conn.commit()

flag = True

except Exception as e:

print('update error:', e)

self.conn.rollback()

finally:

self.close()

return flag

# 数据删除

def delete(self, sql):

flag = False

try:

self.cur.execute(sql)

self.conn.commit()

flag = True

except Exception as e:

print('delete error:', e)

self.conn.rollback()

finally:

self.close()

return flag

# 关闭连接

def close(self):

if self.cur:

self.cur.close()

if self.conn:

self.conn.close()

```

下面是该类中各个方法的详细说明。

**(1)\_\_init__(self, host, port, user, password, database, charset='utf8'):**

这是类的初始化函数,其中host代表连接的主机名,port代表连接的端口号,user代表连接的用户名,password代表连接的密码,database代表连接的数据库名称,charset代表连接的字符集。可以考虑定义为类的属性,使其在连接时使用。

```

def __init__(self, host, port, user, password, database, charset='utf8'):

self.host = host

self.port = port

self.user = user

self.password = password

self.database = database

self.charset = charset

```

**(2)connect(self):**

这是连接MySQL数据库的函数,其中使用pymysql库创建MySQL连接,并使用MySQLdb库获取游标。

```

def connect(self):

self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password, database=self.database, charset=self.charset)

self.cur = self.conn.cursor()

```

**(3)get_one(self, sql):**

这个函数可以让我们获取单条数据,其中sql是我们执行查询语句的字符串。首先通过cur.execute(sql)执行sql语句,然后通过cur.fetchone()获取单个结果,最后将结果封装为字典返回。最后调用close(self)函数关闭数据库连接。

```

def get_one(self, sql):

res = None

try:

res = self.cur.execute(sql)

res = self.cur.fetchone()

except Exception as e:

print('get_one error:', e)

finally:

self.close()

return res

```

**(4)get_all(self, sql):**

这个函数可以让我们获取多条数据,其中sql是我们执行查询语句的字符串。通过cur.execute(sql)执行sql语句,然后通过cur.fetchall()获取多个结果,最后将结果封装为字典返回。最后调用close(self)函数关闭数据库连接。

```

def get_all(self, sql):

res = None

try:

res = self.cur.execute(sql)

res = self.cur.fetchall()

except Exception as e:

print('get_all error:', e)

finally:

self.close()

return res

```

**(5)insert(self,sql):**

这个函数可以让我们向数据库中插入数据,其中sql是我们执行插入语句的字符串。通过cur.execute(sql)执行sql语句,然后通过conn.commit()提交事务,如果提交失败就调用conn.rollback()进行回滚。最后调用close(self)函数关闭数据库连接。

```

def insert(self,sql):

flag = False

try:

self.cur.execute(sql)

self.conn.commit()

flag = True

except Exception as e:

print('insert error:', e)

self.conn.rollback()

finally:

self.close()

return flag

```

**(6)update(self,sql):**

这个函数可以让我们更新数据库中的数据,其中sql是我们执行更新语句的字符串。通过cur.execute(sql)执行sql语句,然后通过conn.commit()提交事务,如果提交失败就调用conn.rollback()进行回滚。最后调用close(self)函数关闭数据库连接。

```

def update(self,sql):

flag = False

try:

self.cur.execute(sql)

self.conn.commit()

flag = True

except Exception as e:

print('update error:', e)

self.conn.rollback()

finally:

self.close()

return flag

```

**(7)delete(self, sql):**

这个函数可以让我们从数据库中删除数据,其中sql是我们执行删除语句的字符串。通过cur.execute(sql)执行sql语句,然后通过conn.commit()提交事务,如果提交失败就调用conn.rollback()进行回滚。最后调用close(self)函数关闭数据库连接。

```

def delete(self, sql):

flag = False

try:

self.cur.execute(sql)

self.conn.commit()

flag = True

except Exception as e:

print('delete error:', e)

self.conn.rollback()

finally:

self.close()

return flag

```

**(8)close(self):**

这个函数调用关闭数据库连接。如果cur存在,就关闭游标;如果conn存在就关闭连接。

```

def close(self):

if self.cur:

self.cur.close()

if self.conn:

self.conn.close()

```

**3、应用封装MySQL基础操作**

有了封装的数据库操作方法,我们就可以在实际项目中应用它了。在下面的示例中,我们将使用MysqlConn类中封装的方法来进行一些常用的MySQL基础操作,例如:连接数据库,创建表,插入数据,获取单条数据,获取多条数据,更新数据和删除数据。

```

if __name__ == '__main__':

#定义连接参数

mysql_conn = MysqlConn('localhost', 3306, 'root', '123456','test', 'utf8')

#连接数据库

mysql_conn.connect()

#创建表

'''

create_sql = '''

CREATE TABLE IF NOT EXISTS `user` (

`user_id` int(11) NOT NULL AUTO_INCREMENT,

`user_name` varchar(20) DEFAULT NULL COMMENT '名称',

`user_age` int(11) DEFAULT NULL COMMENT '年龄',

`user_phone` varchar(11) DEFAULT NULL COMMENT '联系方式',

PRIMARY KEY (`user_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

'''

mysql_conn.insert(create_sql)

'''

#插入数据

'''

insert_sql = "INSERT INTO user(user_name,user_age,user_phone) VALUES ('小明',12,13612345678);"

mysql_conn.insert(insert_sql)

'''

#获取单条数据

'''

select_sql = "SELECT * FROM user WHERE user_id=1;"

res = mysql_conn.get_one(select_sql)

print(res)

'''

#获取多条数据

'''

select_sql = "SELECT * FROM user;"

res = mysql_conn.get_all(select_sql)

print(res)

'''

#数据更新

'''

update_sql = "UPDATE user SET user_phone = '13999999999' WHERE user_id = 1;"

mysql_conn.update(update_sql)

'''

#数据删除

'''

delete_sql = "DELETE FROM user WHERE user_id = 1;"

mysql_conn.delete(delete_sql)

'''

#关闭连接

mysql_conn.close()

```

**4、关于Python软件打包**

随着Python在不同领域的应用,Python软件的打包也越来越重要。将Python代码打包成可执行文件,可以避免环境差异和依赖包管理等问题,从而增加软件的易用性。Python软件打包工具主要有PyInstaller、cx_Freeze、Py2exe、PyOxidizer、Finth、Nuitka等。这里推荐使用PyInstaller进行打包,它支持打包成exe、dll、so、rpm等不同形式文件,并且支持多平台打包。下面介绍一下如何使用PyInstaller将Python代码打包成exe可执行文件。

第一步:安装打包工具PyInstaller

使用pip安装PyInstaller:

```

pip install pyinstaller

```

第二步:制作spec文件

spec文件是一个以.py结尾的命令文件,它可以用来定义打包时需要制作哪些文件及相关的参数。手动制作spec文件可以比较麻烦,这里推荐使用命令生成spec文件。命令格式如下:

```

pyinstaller -F file.py

```

其中‘-F’表示生成单独文件。

第三步:生成可执行文件

使用命令生成可执行文件:

```

pyinstaller file.spec

```

其中file.spec是之前生成的spec文件。生成成功后,在dist文件夹中可以找到打包生成的exe文件。

总结:

以上就是关于Python MySQL数据库操作和如何使用PyInstaller打包Python的详细说明。Python封装MySQL基础操作非常有用,可以在实际开发中方便调用数据库相关操作,提高开发效率。同时,使用PyInstaller打包Python,可以方便的将自己的Python作品分享给其他人使用,增强软件的易用性。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(96) 打赏

评论列表 共有 0 条评论

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