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. JavaScript的ajax使用

    使用ajax首先定义个XMLHttpRequest变量,为了判断对IE6以及以下版本的兼容性,需要var xmlHR;        if (window.XMLHttpRequest) {      ...

  2. BZOJ 3670: [Noi2014]动物园【KMP变形 】

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2738  Solved: 1475[Submit][Status ...

  3. Vijos P1786 质因数分解【暴力】

    质因数分解 背景 NOIP2012普及组第一题 描述 已知正整数n是两个不同的质数的乘积试求出较大的那个质数. 格式 输入格式 输入只有一行包含一个正整数n. 输出格式 输出只有一行包含一个正整数p, ...

  4. 了解前端中的SPA

    单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. 单页W ...

  5. Vs自定义设置

    1.固定选项卡独立行显示设置 效果如下 2.语言设置 可以从官网寻找所需版本语言包 https://my.visualstudio.com/downloads 3.代码段设置 可以对现有的进行一些改造 ...

  6. map的本质

    Map<String, String> map = new HashMap<String, String>(); map.put("1", "va ...

  7. timeit模块

    算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务.一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址 ...

  8. Thrift之TProtocol系列TBinaryProtocol解析

    首先看一下Thrift的整体架构,如下图: 如图所示,黄色部分是用户实现的业务逻辑,褐色部分是根据thrift定义的服务接口描述文件生成的客户端和服务器端代码框架(前篇2中已分析了thrift ser ...

  9. JVM内存划分简介

    参考:深入理解JAVA虚拟机(第二版)

  10. 把一个DIV放到另一个div右下角

    父对象相对定位,子对象以父对象为参考点绝对定位:外层的div设置为相对定位,内层的div设置为绝对定位: <div id="box1"> <div id=&quo ...