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