python3操作pymsql模块
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模块的更多相关文章
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- python3操作redis
redis也被称为缓存 1.redis是一个key-value存储系统,没有ForeignKey和ManyToMany的字段. 2.在redis中创建的数据彼此之间是没有关系的,所以也被称为是非关系型 ...
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- Python3中正则模块re.compile、re.match及re.search函数用法详解
Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...
- python3操作mysql教程
一.下载\安装\配置 1. python3 Python3下载网址:http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.pyt ...
- python3.7 time模块
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 time模块 #time模块没有time.py文件,是内置到解释 ...
- Python3:urllib模块的使用
Python3:urllib模块的使用1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=N ...
- Python3之时间模块详述
Python3之时间模块 time & datetime & calendar 一. 概述 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多p ...
- python之文件系统操作(os模块)
文件系统操作(os模块) import os file_name = "D:\\test_data\\1.txt" file_name_2 = "D:\\test_dat ...
随机推荐
- bootstrap轮播组件之“如何关闭自动轮播”
在一个页面里使用多个bootstrap轮播组件的时候,如果还让所有轮播图都自动轮播的话,整个画面都在动,会给用户一种很不好的体验感受.所以,需要关闭轮播图的自动轮播. 关闭方法:去除如下属性即可: d ...
- CTF---密码学入门第二题 我喜欢培根
我喜欢培根分值:20 来源: Ph0enix 难度:中 参与人数:3449人 Get Flag:1410人 答题人数:1653人 解题通过率:85% key: CTF{} 解题链接: http://c ...
- UR11 A.元旦老人与汉诺塔
题目:http://uoj.ac/contest/23/problem/167 如果我们拿个map来存状态的话.设当前状态是v,下一个状态是s.有f[i+1][s]+=f[i][v]. 初始f[0][ ...
- UE4 Pure函数的特点
蓝图里的Pure函数跟正常函数的区别是:Pure函数在它连接到的正常函数执行的时候才执行,正常函数按照连接的顺序执行. Pure函数不会改变游戏中其他的变量,所以getter和其他一些纯计算的函数一般 ...
- javaIO详解、包含文件以及流操作
1.File 文件操作 java.io.File用来表示文件或者目录.只能用来表示文件或者目录的大小名称等信息,而无法完成对文件内容的CRUD. 1.1构造方法 有四种,当然基本都是根据文件的路径或者 ...
- PHP面试题:HTTP中POST、GET、PUT、DELETE方式的区别
HTTP定义了与服务器交互的不同的方法,最基本的是POST.GET.PUT.DELETE,与其比不可少的URL的全称是资源描述符,我们可以这样理解:url描述了一个网络上资源,而post.get.pu ...
- Linux中ctrl+z 、ctrl+c、 ctrl+d区别
ctrl+c,ctrl+d,ctrl+z在linux程序中意义和区别 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行,,进程已经终止. ct ...
- Thrift之TProtocol系列TBinaryProtocol解析
首先看一下Thrift的整体架构,如下图: 如图所示,黄色部分是用户实现的业务逻辑,褐色部分是根据thrift定义的服务接口描述文件生成的客户端和服务器端代码框架(前篇2中已分析了thrift ser ...
- 自动化测试框架Selenium工作原理
本文所讲的Selenium是指Selenium Webdriver Selenium WebDriver与RC的功能相同,并且包含原始的1.x绑定.它涉及语言绑定和单个浏览器控制代码的实现.这通常被称 ...
- ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(三)—用户账户及cookie配置
修改用户账户及cookie配置 一.修改密码强度和用户邮箱验证规则: 打开Startup.cs,找到public void ConfigureServices(IServiceCollection s ...