带你学习PyMySQL

微信公众号:CodeId有什么建议可以到公众号里进行留言。

本篇文章主要学习一下python3的第三方库: PyMySQL。它是用于操作MySQL数据库的。

1.安装PyMySQL

第一种方法:打开命令行窗口在里面运行pip install PyMySQL,等待安装完毕就可以了。第二种方法:如果你使用的是: pycharm。找到File-> Settings,进入里面,在搜索框里搜索Project Interpreter窗口,然后点击窗口右边的 +,会进入一个添加页面,在页面里面的搜索框中,输入库的名字PyMySql选中,点击 Install Package,等待安装完毕就可以了。

2.Connection对象

Connection对象主要是用于连接数据库,其中还包括了一些其他操作MYSQL数据库的方法。下面进行一一的讲解。

2.1 connect()

作用:对mysql数据库进行连接。比如:

1import pymysql2con = pymysql.connect(host='localhost',user='root',password='1234',database='pymysql')

上述代码是对数据库进行连接,其中host表示:数据库服务器所在的主机,这里设置成本地 localhost;user表示:登录数据库的用户名; password表示:用户名的登录密码;database表示:要连接数据库的名称。还有很多参数可以在 https://pymysql.readthedocs.io/en/latest/modules/connections.html中进行详细了解。

2.2 begin()

作用:开启一个事务,类似于BEGIN TRANSACTION

事务是数据库恢复技术里面的一个概念,是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。通常是以BEGIN TRANSACTION开始,以 COMMITROLLBACK结束。—来自《数据库系统概论》

2.3 commit()

作用:提交事务的所有操作,具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,类似于COMMIT。注意:只有对磁盘上的数据进行更新时,才会调用 commit()。比如INSERTREPLACE等操作。此操作结束表示事务的正常结束。

2.4 rollback()

作用:回滚当前事务,系统将事务中对数据库的所有已完成的操作全部撤销,回到事务开始时的状态,类似于ROLLBACK。注意:此操作表示事务不正常结束。一般都是发生了某种故障,事务不能继续执行。

2.5 cursor(cursor=None)

作用:创建一个新的cursor对象,用于执行对数据的操作。参数 cursor用来指定创建cursor对象的类型,它可以是 CursorSSCursorDictCursorSSDictCursorNone的意思是使用Cursor

2.6 open

作用:判断连接是否打开,如果打开返回True否在返回 False

1con = pymysql.connect(host='localhost',user='root',password='1234')2con.select_db('pymysql')3print(con.open) # True

2.7 ping(reconnect=True)

作用:检查服务器是否处于活动状态。参数reconnect表示 重新连接默认设置为True,意思是:如果连接已经关闭就重新连接。当连接关闭并且 reconnect=False时会抛出错误。

2.8 select_db(db)

作用:选择数据库。参数db表示选择数据库的名字。

1con = pymysql.connect(host='localhost',user='root',password='1234')2con.select_db('pymysql') # 选择 pymysql 数据库

2.9 close()

作用:关闭连接

3.Cursor对象

Cursor对象就是对数据库进行具体的操作了,比如增、删、改、查等等一系列操作都可以完成。上面已经说过 Cursor对象有四种类型,下面分别介绍每个类型的作用。

类型描述
Cursor普通的游标对象,默认创建的游标对象
SSCursor不缓存游标,主要用于当操作需要返回大量数据的时候
DictCursor以字典的形式返回操作结果
SSDictCursor不缓存游标,将结果以字典的形式进行返回

注:不缓存游标的特点是:根据需要获取行,不是将所有的数据都复制到缓冲区。这样做的好处是:客户端使用更少的内存,并且当网速慢时或者结果集非常大时,返回行的速度要快得多。

下面对Cursor对象的每一个方法,进行简单的了解。

3.1 execute(query, args=None)

作用:执行一个操作。参数query表示要执行的SQL语句,参数 args用于给SQL传入参数,是可选的。方法的返回值是:受影响的行数注意:如果 args是列表或元组,则可以用%s作为SQL语句中的占位符。 如果argsdict,则可以用%(name)s作为SQL语句中的占位符。比如:向 code表中的codeid字段中插入数据。

1# 参数是元组时2sql = "INSERT INTO code (codeid) VALUES (%s)"3cursor.execute(sql,('123'))45# 参数是字典时6arg = {'codeid':'codeid'}7sql = "INSERT INTO code (codeid) VALUES (%(codeid)s)"8cursor.execute(sql,arg)

3.2 executemany(query, args)

作用:一次执行可以操作多个数据。此方法可提高多行INSERTREPLACE的性能。函数的返回值是:受影响的行数比如:当我们有多条数据需要向数据库中添加时,调用 execute()只能一条一条的添加,很麻烦,性能也不是很高。使用executemany()就很好的解决了这个问题。

1sql = "INSERT INTO code (codeid) VALUES (%s)"2cursor.executemany(sql,['A','B','C','D']) #一次插入A B C D 四个值

3.3 fetchall()

作用:获取所有查询的结果行比如:

1sql = "SELECT * FROM code"2cursor.execute(sql)3result = cursor.fetchall()4print(result)

3.4 fetchmany(size=None)

作用:获取查询结果的前size行比如:

1sql = "SELECT * FROM code"2cursor.execute(sql)3result = cursor.fetchmany(3) # 获取前三行4print(result)

3.5 fetchone()

作用:获取查询结果的一行

1sql = "SELECT * FROM code"2cursor.execute(sql)3result = cursor.fetchone() 4print(result)

注意:如果fetchall(), fetchmany(),fetchone()同时作用于同一个查询时,每个方法的执行的开头是上一个方法执行的结尾。也就是说,如果前面执行了 fetchall()方法,后面执行的fetchmany()fetchone()方法是获取不到结果的。比如:

1sql = "SELECT * FROM code"2cursor.execute(sql)3result = cursor.fetchall()4print(result) # 这里会输出所有结果。。。5result = cursor.fetchone()6print(result) # None7result = cursor.fetchmany(3)8print(result) # ()

3.6 mogrify(query, args=None)

作用:转换,把SQL语句和参数相结合,对其中特殊字符进行加\转义,然后返回一个 execute()方法发送到数据库确切执行的字符串,避免注入语句生成。比如:

1sql = "DELETE FROM code WHERE codeid=%s AND name=%s"2stri = cursor.mogrify(sql,["u1' or '1'-- ","Tom"])3print(stri)4# DELETE FROM code WHERE codeid='u1\' or \'1\'-- ' AND name='Tom'

3.7 callproc(procname, args=())

作用:调用数据库中的存储过程。参数procname表示数据库中存储过程的名字, args表示为存储过程传入的参数。

3.8 close()

作用:关闭游标

下面是我的公众号:CodeId 欢迎关注

《带你学习PyMySQL》 公众号:CodeId

    原文作者:MySql
    原文地址: https://juejin.im/entry/5b3e192c5188251afd7dc382
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞