概述
本文章以授权于微信公众号: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
开始,以COMMIT
或ROLLBACK
结束。—来自《数据库系统概论》
2.3 commit()
作用:提交事务的所有操作,具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,类似于COMMIT
。
注意:只有对磁盘上的数据进行更新时,才会调用commit()
。比如INSERT
和REPLACE
等操作。此操作结束表示事务的正常结束。
2.4 rollback()
作用:回滚当前事务,系统将事务中对数据库的所有已完成的操作全部撤销,回到事务开始时的状态,类似于ROLLBACK
。
注意:此操作表示事务不正常结束。一般都是发生了某种故障,事务不能继续执行。
2.5 cursor(cursor=None)
作用:创建一个新的cursor
对象,用于执行对数据的操作。参数cursor
用来指定创建cursor对象
的类型,它可以是Cursor
,SSCursor
,DictCursor
,SSDictCursor
。None
的意思是使用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语句中的占位符。 如果args
是dict
,则可以用%(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)
作用:一次执行可以操作多个数据。此方法可提高多行INSERT
和REPLACE
的性能。函数的返回值是:受影响的行数
比如:当我们有多条数据需要向数据库中添加时,调用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 欢迎关注
最后
以上就是俊秀砖头为你收集整理的带你学习PyMySql的全部内容,希望文章能够帮你解决带你学习PyMySql所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复