我是靠谱客的博主 俊秀砖头,最近开发中收集的这篇文章主要介绍带你学习PyMySql,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文章以授权于微信公众号:HarLearn
有什么建议可以到公众号里进行留言。

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

1.安装PyMySQL

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

2.Connection对象

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

2.1 connect()

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

import pymysql
con = 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

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

2.7 ping(reconnect=True)

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

2.8 select_db(db)

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

con = pymysql.connect(host='localhost',user='root',password='1234')
con.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字段中插入数据。

# 参数是元组时
sql = "INSERT INTO code (codeid) VALUES (%s)"
cursor.execute(sql,('123'))

# 参数是字典时
arg = {'codeid':'codeid'}
sql = "INSERT INTO code (codeid) VALUES (%(codeid)s)"
cursor.execute(sql,arg)

3.2 executemany(query, args)

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

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

3.3 fetchall()

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

sql = "SELECT * FROM code"
cursor.execute(sql)
result = cursor.fetchall()
print(result)

3.4 fetchmany(size=None)

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

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

3.5 fetchone()

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

sql = "SELECT * FROM code"
cursor.execute(sql)
result = cursor.fetchone() 
print(result)

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

sql = "SELECT * FROM code"
cursor.execute(sql)
result = cursor.fetchall()
print(result) # 这里会输出所有结果。。。
result = cursor.fetchone()
print(result) # None
result = cursor.fetchmany(3)
print(result) # ()

3.6 mogrify(query, args=None)

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

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

3.7 callproc(procname, args=())

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

3.8 close()

作用:关闭游标

下面是公众号:HarLearn 欢迎关注

公众号:CodeId

最后

以上就是俊秀砖头为你收集整理的带你学习PyMySql的全部内容,希望文章能够帮你解决带你学习PyMySql所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部