pymysql是python中操作mysql的模块。

1.pymysql模块的安装

pip3 install pymysql

也可以使用pycharm这个IDE工具来安装pymysql这个模块。

2.pymysql模块的使用

1.执行mysql语句,获取查询的结果

代码如下:

#!/usr/bin/env python
#_*_coding:utf-8_*_ import pymysql #创建连接
conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1")
#创建游标
cursor=conn.cursor()
#执行mysql语句,并返回执行的结果
res=cursor.execute("select name from db1")
#打印执行的结果
print(res)
#把要执行的语句提交,否则无法保存新建或者修改数据
conn.commit() #关闭游标
cursor.close()
#关闭连接
conn.close()

执行结果为:

4

因为从db1.db1这张表中检索到四条数据,所以返回的值为4

需要注意的是,查询过程中存在中文的话,连接需要添加**"charset='utf-8'"**,否则中文会显示乱码

2.获取查询的数据

代码如下:

#!/usr/bin/env python
#_*_coding:utf-8_*_ import pymysql #创建连接
conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1")
#创建游标
cursor=conn.cursor()
#执行mysql语句
cursor.execute("select name from db1") #获取所有的执行结果
res=cursor.fetchall()
#打印获取到的执行结果
print(res) #提交要执行的mysql指令
conn.commit()
#关闭游标
cursor.close()
#关闭连接
conn.close()

执行结果为:

(('xiaoming',), ('xiaobing',), ('xiaoyong',), ('xiaojian',))

可以看到,返回的结果是一个元组类型的数据.

还可以在创建游标的时候,使用选项来指定返回的结果为哪种数据类型:

cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

使用这个指令可以把返回的结果变成字典类型。

在获取执行的结果时,可以指定获取的结果的条数,可以使用的选项如下:

fetchone()          取得检索结果的一条数据
fetchmany(n) 取得检索结果的n条数据
fetchall() 取得检索结果的所有数据

需要注意的是,与读取文件时的指针类似.如果在同一段代码中,先使用fetchone()获取检索结果的第一条数据,

然后再使用fetchmany(2)的话,指针会在检索结果的当前位置向后读取执行结果,而不会从头开始重新读取检索的结果.

代码如下:

#!/usr/bin/env python
#_*_coding:utf-8_*_ import pymysql #创建连接
conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1")
#创建游标
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
#执行mysql语句,并返回执行的结果
cursor.execute("select name from db1") #取执行结果的第一条数据,并打印
res1=cursor.fetchone()
print("this is first result:",res1)
#从剩下的执行结果中再取两条数据,并打印
res2=cursor.fetchmany(2)
print("this is second result:",res2)
#再从剩下的数据中取所有的数据,并打印
res3=cursor.getchall()
print("this is third result:",res3) #提交要执行的命令
conn.commit()
#关闭游标
cursor.close()
#关闭连接
conn.close()

执行结果如下:

this is first result: {'name': 'xiaoming'}
this is second result: [{'name': 'xiaobing'}, {'name': 'xiaoyong'}]
this is third result: [{'name': 'xiaojian'}]

第一次取第一行的检索结果,第二次取两行的时候,第三次取剩下的所有的结果.

因为数据表中只有四条记录,而第一次已经取走一行了,

第二次从第一次取得的结果又向后继续取两个值,所以最后取所有的值时,只剩下一个,所以第三次取得一个值。

在创建游标的时候,指定了返回的数据类型为字典类型,所以返回的结果是字典数据类型。

在使用fetch时,按照顺序进行取得数据,可以使用cursor.scroll(num,mode)来移动游标位置

mode指定位置,是相对当前位置,还是绝对位置
num指定移动的位数,正数向后移动,负数向前移动

例如:

cursor.scroll(1,mode="relative")		#相对于当前的指针位置取一个值
cursor.scroll(2,mode="absolute") #在当前的绝对位置取一个值

"relative"与"absolute"的区别,看下面两段代码:

第一段代码:

#!/usr/bin/env python
#_*_coding:utf-8_*_ import pymysql conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1")
cursor=conn.cursor() cursor.execute("SELECT * FROM db1")
cursor.fetchone()
cursor.scroll(1,mode="relative")
print(cursor.fetchone()) conn.commit()
cursor.close()
conn.close()

执行结果如下:

(3, 'xiaoyong', 'xiaoyong')

第二段代码:

#!/usr/bin/env python
#_*_coding:utf-8_*_ import pymysql conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") cursor=conn.cursor() cursor.execute("SELECT * FROM db1")
cursor.fetchone()
cursor.scroll(1,mode="absolute")
print(cursor.fetchone()) conn.commit()
cursor.close()
conn.close()

执行结果如下:

(2, 'xiaobing', 'xiaobing')

3.获取新创建数据的自增ID

代码如下:

#!/usr/bin/env python
# _*_coding:utf-8_*_ import pymysql conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") cursor=conn.cursor() cursor.execute('INSERT INTO db1(name,password) VALUES("xiaofei","xiaofei")') conn.commit()
cursor.close()
conn.close() res=cursor.lastrowid
print(res)

执行结果为:

5

数据表db1中本来有四条数据,现在新增一条,其ID为自增类型,所以返回结果为5

python3操作pymsql模块的更多相关文章

  1. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  2. python3操作redis

    redis也被称为缓存 1.redis是一个key-value存储系统,没有ForeignKey和ManyToMany的字段. 2.在redis中创建的数据彼此之间是没有关系的,所以也被称为是非关系型 ...

  3. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  4. Python3中正则模块re.compile、re.match及re.search函数用法详解

    Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...

  5. python3操作mysql教程

    一.下载\安装\配置 1. python3 Python3下载网址:http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.pyt ...

  6. python3.7 time模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 time模块 #time模块没有time.py文件,是内置到解释 ...

  7. Python3:urllib模块的使用

    Python3:urllib模块的使用1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=N ...

  8. Python3之时间模块详述

    Python3之时间模块  time & datetime & calendar 一. 概述 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多p ...

  9. python之文件系统操作(os模块)

    文件系统操作(os模块) import os file_name = "D:\\test_data\\1.txt" file_name_2 = "D:\\test_dat ...

随机推荐

  1. Redux入门示例-TodoList

    Tip 前端技术真是日新月异,搞完 React 不搭配个数据流都不好意思了.满怀期待的心去翻了翻 flux,简直被官方那意识流的文档折服了,真是又臭又长还是我智商问题?

  2. ZOj 3466 The Hive II

    There is a hive in the village. Like this. There are 8 columns(from A to H) in this hive. Different ...

  3. 洛谷 P1553 数字反转(升级版)【字符串+STL stack】

    P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调 ...

  4. 深度优先搜索(DFS)专题讲座PPT截图【需要原稿的请留言或私信】

    以下是今晚我在bilibili直播讲DFS算法的时候的ppt截图,ppt搞了一下午,水平有限,只能做成这个样子,供大家参考!(如果需要原稿,请在评论区留言或私信告诉我,我会发到你的邮箱里),感谢各位的 ...

  5. [bzoj1811] [Ioi2005]mea

    还是比较好想到的..设第一个数为x,那么以后的所有数都能用x和M表示出来. 然后再根据非递减的限制条件得出x的取值范围. #include<cstdio> #include<iost ...

  6. JAVA虚拟机之对象探秘

    上一章主要写到了JVM中运行时数据区域各个部分的功能及其作用.上一章说到了对象是分配在堆上面的,所以接下来我们写到对象在堆内存中是如何创建.如何布局.如何访问.1. 对象的创建 在java程序中对象的 ...

  7. nodeJs文件系统(fs)与流(stream)

    一.简介 本文将介绍node.js文件系统(fs)和流(stream)的一些API已经参数使用情况. 二.目录 文件系统将介绍以下方法: 1.fs.readFile 2.fs.writeFile 3. ...

  8. IntelliJ IDEA 2017.3下载与安装

    大约在2017年暑假的时候知道了IntelliJ IDEA,但是那个时候一心认为有Eclipse就足够用了,然而今天在网上冲浪的时候发现,IntelliJ IDEA是java语言开发的集成环境,这款开 ...

  9. Oracle_索引

    Oracle_索引 索引类似字典的和课本目录,是为了加快对数据的搜索速度而设立的.索引有自己专门的存储空间,与表独立存放. 索引的作用:在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数 ...

  10. lnmp14最新版

    系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin Server/Aliyun/Amazon/Mint Linux发行版 需要5GB以上硬盘剩 ...