一、python与mysql交互

因版本不同python操作mysql有两个模块,python3不再支持MySQL-python,模块使用都一样:

python2.7:MySQL-python

python3:pymysql

安装:

pip install  Mysql-python

pip install pymysql

pymysql介绍:

1.执行原生sql语句

#!/usr/bin/env python3
#_*_ coding:utf-8 _*_
#Author:wd
import pymysql
conn=pymysql.connect(host='10.0.0.241',port=3307,user='stu',passwd='1234qwer',db='student')#创建连接
cursor=conn.cursor()#创建游标
try:
#num=cursor.execute("create table student (name CHAR(20),age INT(3),date DAT )")#创建表不需要提交可以生效
num=cursor.execute("insert into student value('wd',22,'1993-05-22')")#执行sql返回受影响的条目数
print(num)
conn.commit() #pymysql默认开启了事务,进行数据库更新需要提交
except:
conn.rollback()#出现异常则回滚
cursor.close()#关闭游标
conn.close()#关闭连接

2.批量执行sql

实际是循环调用execute

def executemany(self, query, args):
# type: (str, list) -> int
#!/usr/bin/env python3
#_*_ coding:utf-8 _*_
#Author:wd
import pymysql
conn=pymysql.connect(host='10.0.0.241',port=3307,user='stu',passwd='1234qwer',db='student')#创建连接
cursor=conn.cursor()#创建游标
num=cursor.executemany("insert into student values(%s,%s,%s)",[('jack',22,'1993-01-11'),('tara',18,'1998-03-04')])
#一次性执行操作多条,参数为
print(num)#打印条结果条目
conn.commit() #pymysql默认开启了事务,进行数据库更新需要提交
new_id = cursor.lastrowid#如果是自增id,该方法可以获取到插入完成以后的ID
print(new_id)
cursor.close()#关闭游标
conn.close()#关闭连接

3.查询操作:fetch

#!/usr/bin/env python3
#_*_ coding:utf-8 _*_
#Author:wd import pymysql
conn=pymysql.connect(host='10.0.0.241',port=3307,user='stu',passwd='1234qwer',db='student')#创建连接
cursor=conn.cursor()#创建游标
cursor = conn.cursor()
cursor.execute("select * from student") # 获取第一行数据
row_1=cursor.fetchone()
print(row_1) # 获取前n行数据
row_2=cursor.fetchmany(3)
print(row_2)
# 获取所有数据
# row_3=cursor.fetchall()
cursor.scroll(0,mode='absolute')#将游标重新移至开始处
row_new=cursor.fetchone()
print(row_new)
cursor.close()#关闭游标
conn.close()#关闭连接

TIPS:使用fetchone获取数据如同读取文件一样,如果读一行游标会下移一行,

可以使用cursor.scroll(num,mode)来移动游标位置,如:

  • cursor.scroll(1,mode='relative')  # 相对当前位置移动
  • cursor.scroll(2,mode='absolute') # 相对绝对位置移动

4.设置fetch获取数据类型

默认使用fetch查询结果是tuple,我们还可以设置获取的数据返回时dict

#!/usr/bin/env python3
#_*_ coding:utf-8 _*_
#Author:wd import pymysql conn = pymysql.connect(host='10.0.0.241', port=3307, user='stu', passwd='1234qwer', db='student')
# 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#设置游标类型为字典
r = cursor.execute("select * from student")
res = cursor.fetchone()
print(res)
cursor.close()
conn.close()
结果:
{'name': 'wd', 'age': 22, 'date': datetime.date(1993, 5, 22)}

python与MySQL的更多相关文章

  1. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  2. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  3. 使用 python 管理 mysql 开发工具箱 - 1

    Mysql 是一个比较优秀的开源的数据库,很多公司都在使用.作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现. 一.模块 Co ...

  4. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  5. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. Python操作Mysql数据库时SQL语句的格式问题

    一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...

  7. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  8. python对Mysql操作和使用ORM框架(SQLAlchemy)

    python对mysql的操作 Mysql 常见操作 数据库操作 创建数据库 create database fuzjtest 删除数据库 drop database fuzjtest 查询数据库 s ...

  9. python操作mysql总结

    Windows系统,python环境搭建. 下载并安装python2.7.11 https://www.python.org/downloads/ 下载并安装python的mysql包: http:/ ...

  10. python使用mysql数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

随机推荐

  1. python_第2课

    前言 回顾一下python+selenium基础,并整理相关知识点,分享给有需要,在前进道路上的朋友. 由于不是在python中敲的代码,有可能有缩进等相关错误,请自行检查 数据类型 #python中 ...

  2. 公众号的Markdown排版利器:Md2All

    微信公众号:颜家大少如有问题或建议,请公众号留言 本文所用排版工具:Md2All,http://md.aclickall.com 公众号排版工具 公众号的排版编辑工具还真的不少,但功能大同小异,大部分 ...

  3. 原生JavaScript如何解决父元素查找指定类名的子元素的问题

    问题:已知一个元素的类名是right并且这个元素的祖先元素的类名为parent,现在想通过原生JavaScript获得这个类名为right的元素. 我的思路:利用递归.先判断已知的祖先元素(题中的pa ...

  4. 用ildasm和ilasm对.net下的exe程序进行破解初探

    1.对ildasm和ilasm的解释和用法在msdn上有. ildasm:MSIL 反汇编程序是 MSIL 汇编程序 (Ilasm.exe) 的伙伴工具. Ildasm.exe 采用包含 Micros ...

  5. php的二维数组排序

    //建立一个$arr的二维数组 $arr=array( array('name'=>'e','age'=>5), array('name'=>'b','age'=>2), ar ...

  6. PE文件详解(九)

    本篇文章转载自小甲鱼的一篇日志,原文地址 我们知道,Windows 将程序的各种界面定义为资源,包括加速键(Accelerator).位图(Bitmap).光标(Cursor).对话框(Dialog ...

  7. CSS列表及导航条

    大多数网页中都包含某种形式的列表,今天我们就来联系几个基本的导航条.   垂直导航条 注意要点: 去掉默认的项目符号(list-style-type:none),将外边距和内边距都设为0. 以em设置 ...

  8. metasploit联动beef启动

    (温馨提示:请按照步骤来,否则beef到后面会启动不了) 我们首先进入vim /usr/share/beef-xss/config.yaml 找到metasploit把它改为启动 把false改为tr ...

  9. HDU 2438 Turn the corner(三分查找)

    托一个学弟的福,学了一下他的最简便三分写法,然后找了一道三分的题验证了下,AC了一题,写法确实方便,还是我太弱了,漫漫AC路!各路大神,以后你们有啥好的简便写法可以在博客下方留个言或私信我,谢谢了! ...

  10. bzoj:1661 [Usaco2006 Nov]Big Square 巨大正方形

    Description 农民 John 的牛参加了一次和农民 Bob 的牛的竞赛.他们在区域中画了一个N*N 的正方形点阵,两个农场的牛各自占据了一些点.当然不能有两头牛处于同一个点.农场的目标是用自 ...