Python实现MySQL的增删改查

Python实现MySQL的增删改查

本文是我们《手把手教你用Python实现接口自动化测试》系列文章中的支线文章,用于我们项目中MySQL的增删改查说明。

前言

在本系列文章中我们对MySQL的操作使用的是pymsql类库,pymsql是一个纯Python编写的MySQL类库,它的目标是替代MySQLdb,可以在CPython、PyPy、IronPython和Python环境下运行。

pymsql的性能和MySQLdb几乎相当,如果对性能要求不高,使用pymsql相对来说更加方便。而且pymsql的使用方法和MySQLdb几乎一样。

使用到的工具

编程语言: Python 3.7

编译器:  Pycharm

Python类:  pymsql

1. pymysql数据操作流程

Python实现MySQL的增删改查_第1张图片

pymysql数据操作流程

我们使用pymsql操作MySQL比较简单,跟使用客户端连接MySQL进行sql语句操作一样。

首先创建数据库的连接对象connection,然后调用connection对象中的sql执行方法cursor游标,使用cursor游标进行sql语句的执行,实现增删改查的功能,当然我们在使用这些对象后都应该进行关闭操作。

2. connection对象

       connection对象主要是用于建立与MySQL数据库的连接,调用connection对象的cursor()方法可以返回cursor游标。

connection对象有如下几个参数:

参数名参数解释

host需要连接的mysql主机地址,如果本地数据库就是是'localhost'

port需要连接的mysql主机的端口,默认是3306

db数据库的名称

user连接的mysql主机的用户名

password连接的mysql主机的密码

charset通信采用的编码方式,推荐使用utf8

cursorclass数据库驱动,python环境下使用:pymysql.cursors.DictCursor

connection对象有如下几个方法:

方法名方法作用

close()关闭连接

commit()提交操作

cursor()获取cursor游标,用于执行sql语句

3. cursor游标

       cursor游标主要是用于执行sql语句,使用频度最高的语句为execute()、select()、insert()、update()、delete()

cursor游标有如下几个方法:

方法名方法作用

execute()执行语句,返回受影响的行数,主要用于执行

insert、update、deleteinsert、update、delete语句,也可以执行create、alter、drop等语句

fetchone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元组

fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回

4. 增删改查的实现

      4.1 创建connection对象

       本文中示例的数据库使用的是本地MySQL,连接信息采用是配置文件存储的方式进行读取的。

;本地MySQL连接信息[DataBase_ConnectInfo_Local]host=localhostport=3306dbname=testdbusername=rootpassword=root

@staticmethoddefget_connection():"""

        创建DB连接对象connection

        :return:

        """globalconnection"""获取配置文件中数据库的连接信息"""dbconnectinfo_dict=readdbconfig.DBConnectInfo().get_database_connectinfo()try:"""连接MySQL数据库获取连接对象"""connection=pymysql.connect(host=dbconnectinfo_dict.get('host'),port=int(dbconnectinfo_dict.get('port')),user=dbconnectinfo_dict.get('username'),password=dbconnectinfo_dict.get('password'),db=dbconnectinfo_dict.get('dbname'),charset=charset,cursorclass=cursorclass)returnconnectionexceptExceptionase:print(e)print('获取数据库连接对象失败...')print('数据库连接信息为:'+str(dbconnectinfo_dict))

      4.2 初始化connection对象

       每次我们调用该封装类的时候,我们都对connection对象进行初始化操作。

def__init__(self):"""

        初始化连接对象

        """globalcharset,cursorclass        charset='utf8mb4'cursorclass=pymysql.cursors.DictCursor        self.connection=self.get_connection()

      4.3 进行insert、delete、update的操作(无需返回结果)

:我们在进行insert、delete、update的执行的过程中遇到错误时需要进行数据回滚操作,我们可以调用connection对象的rollback()方法将数据恢复至操作之前的状态。

defexecutedb_bysql(self,sql):"""

        根据sql语句执行db操作(适用于insert、delete、update)

        :param sql:

        :return:

        """globalconnection"""获取DB连接对象connection"""connection=self.connectiontry:"""使用cursor()方法获取操作游标"""cursor=connection.cursor()"""执行sql语句"""cursor.execute(sql)"""提交到数据库执行"""connection.commit()"""关闭操作游标"""cursor.close()"""关闭db连接对象"""connection.close()exceptExceptionase:"""发生错误时回滚"""connection.rollback()print(e)print('执行sql语句失败,请检查sql语句...')print('SQL语句:'+str(sql))

      4.3 进行select操作(有结果返回)

defselectall_bysql(self,sql):"""

        根据sql语句获取多条结果(适用于select)

        :param sql:

        :return:

        """globalconnection"""获取DB连接对象connection"""connection=self.connectiontry:"""通过cursor创建游标"""cursor=connection.cursor()"""执行数据查询"""cursor.execute(sql)"""获取查询结果"""result=cursor.fetchall()"""提交到数据库执行"""connection.commit()"""关闭操作游标"""cursor.close()"""关闭db连接对象"""connection.close()"""返回查询结果"""returnresultexceptExceptionase:print(e)print('执行sql语句失败,请检查sql语句...')print('SQL语句:'+str(sql))

总结

以上就是我们使用pymsql类库对MySQL的操作进行的一次封装操作,该封装类主要通过提交sql语句,进行相关操作,因为我们sql语句本身就可以是增删改查的,这样不会太依赖类库中不同对象的方法了,只需专注于sql语句的编写即可。

你可能感兴趣的:(Python实现MySQL的增删改查)