python高级之操作数据库

 

python高级之操作数据库

本节内容

  1. pymysql介绍及安装
  2. 使用pymysql执行sql
  3. 获取新建数据自增ID
  4. fetch数据类型设置

1.pymysql介绍及安装

在python2中连接数据库使可以使用mysqldb模块,为什么在python3中使用pymysql模块呢?因为在python2中mysqldb和pymysql都可以操作数据库,但是当python升级到3以后,pymysql模块支持python3了,但是mysqldb模块目前还不支持python3,所以用python3的小伙伴们还是先用pymysql吧。pymysql和mysqldb的使用方法基本相同。

安装pymysql可以使用pip安装:

 1 pip3 install pymysql 

安装完成之后在python解释器中执行import pymysql如果不报错说明安装成功了。

2.使用pymysql执行sql

 1 import pymysql  # 导入模块
2
3 conn=pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="123456",db="sql_example",charset="utf8")
4 # 注意,这里传入的参数必须是关键字参数,不能省略关键字,否则将连接不上数据库
5 # conn.autocommit() # 如果设置了这个属性,则会自动commit sql语句,而不需要手动commit
6 cursor=conn.cursor() # 创建游标
7 # cursor.execute("insert into class(caption) values('全栈二班')")
8
9 r=cursor.execute("select * from class") # 执行查询语句并返回查询的数据行数
10 print(r) # 打印行数
11 # print(cursor.fetchall()) # 打印返回的所有数据,数据结构是元祖套元祖((),()),里面的一个元祖就是一行数据
12 # print(cursor.fetchmany(num)) # 打印返回的num条数据,数据结构是元祖套元祖((),()),里面的一个元祖就是一行数据
13 print(cursor.fetchone()) # 打印返回的数据中第一行数据,结构是只有一个元祖
14 cursor.scrroll() # 修改游标的位置
15
16 conn.commit() # 手动提交要执行的sql
17 cursor.close() # 关闭游标
18 conn.close() # 关闭连接

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

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

3.获取新建数据自增ID

 1 conn = pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="123456",db="sql_example",charset="utf8")
2 cursor = conn.cursor()
3 cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
4 ## executemany可以执行多条插入语句,后面接的数据需要是一个可迭代的对象,一般是列表里面套元祖或列表
5 conn.commit()
6 cursor.close()
7 conn.close()
8
9 # 获取最新自增ID
10 new_id = cursor.lastrowid # 通过cursor.lastrowid可以获取获取最新行的自增ID

表里面只能有一个字段设置为自增ID。。。

4.fetch数据类型设置

关于默认获取的数据是元祖类型,如果想要获得字典类型的数据,即:

 1 conn = pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="123456",db="sql_example",charset="utf8")
2
3 # 游标设置为字典类型
4 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
5 r = cursor.execute("call p1()")
6
7 result = cursor.fetchone()
8
9 conn.commit()
10 cursor.close()
11 conn.close()
 
分类: python高级
 
好文要顶 关注我 收藏该文

第九篇:python高级之操作数据库的更多相关文章

  1. python高级之操作数据库

    python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及安装 在python2中连接数据库 ...

  2. python MySQLdb用法,python中cursor操作数据库(转)

    数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...

  3. Python 高级网络操作 - Python Advanced Network Operations

    Python 高级网络操作 - Python Advanced Network Operations Half Open Socket, 一个单向的 socket 被称为 half open sock ...

  4. Python之路【第九篇】堡垒机基础&数据库操作

    复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...

  5. 基于Python的接口自动化实战-基础篇之pymysql模块操作数据库

    引言 在进行功能或者接口测试时常常需要通过连接数据库,操作和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操作是否正确等.因此,在进行接口自动化测试时,我们一样绕不开接 ...

  6. 第七篇: python高级之多线程

    21 interest=0.05 22 count=amount+amount*interest 23 24 self.withdraw(count) 25 26 27 def transfer(_f ...

  7. python中cursor操作数据库(转)

    原文出处:http://doudouclever.blog.163.com/blog/static/175112310201284115340663/ python 操作数据库,要安装一个Python ...

  8. 10 python学习笔记-操作数据库(十)

    在功能.接口测试中,常常需要通过数据库的操作,来准备数据.检测环境及核对功能.接口的数据库操作是否正确. 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备. 环境检查及数据库断言的功能.数据 ...

  9. Python之路(第九篇)Python文件操作

    一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r",encoding = “utf ...

随机推荐

  1. 让chrome浏览器快的不要不要的

    Chrome 已经成了很多人的主力浏览器,你可能被它的简洁快速所吸引,但它日益丰富的「扩展」,你可能从来都没有接触过,而事实上,很多扩展可以挖掘出 Chrome 的潜能,让它变得前所未有的强大.有哪些 ...

  2. BZOJ 4052 Magical GCD

    Description 给出一个长度在\(100000\)以内的正整数序列,大小不超过\(10^{12}\).求一个连续子序列,使得在所有的连续子序列中,它们的GCD值乘以它们的长度最大. Input ...

  3. 小游戏 Lights Out (关灯) 的求解 —— 异或方程组

    Author : Evensgn  Blog Link : http://www.cnblogs.com/JoeFan/ Article Link : http://www.cnblogs.com/J ...

  4. golang入门-- 一个2D的图形库学习

    此库叫gg,源码在github. 1.获取源码并安装到本地: 首先要安装git (传送门)  :   https://git-scm.com/download/ 然后就可以通过  go get 命令从 ...

  5. 设计模式之(三)Proxy模式

    今天学习Proxy模式.代理模式是在对已有对象操作困难或者不太方便时,选择用代理的方式对对象进行访问.Proxy实现的方法必须和被代理对象一致. 举一个简单的例子, 有一个Math类实现了IMath接 ...

  6. bzoj3631

    其实这道题其实可以转化为这样一个问题 给定n-1对点,将这两点x,y间简单路径上的点(包括起点终点)权值+1 (最后再把除了起点外的点的权值-1,注意终点没糖吃) 求每个点的权值 首先想到的是先找LC ...

  7. Node.js权威指南 (1) - Node.js介绍

    1.1 Node.js概述 / 2 1.1.1 使用Node.js能够解决什么问题 / 2 1.1.2 实现高性能服务器 / 2 1.1.3 非阻塞型I/O及事件环机制 / 2 1.1.4 Node. ...

  8. Oracle imp 不同字符集导入

    有一个dmp文件是US7ASCII字符的,现有数据库是UTF8字符集,按照查到的资料看说是UTF8是US7ASCII超级可以自动转换导入.但是导入的时候某些字段超长,导致一个表导入错误. 解决办法,讲 ...

  9. [学习整理]eclipe/MyEclipse:重要的快捷键

    一.查看大工程代码最重要的几个快捷键 其实有一些,直接在编辑器页面内右键也可查看相应的快捷键(比如F3,F4,Ctrl+O,Ctrl+T),但有些比较好用的快捷键,并不能能直接或方便地在eclipse ...

  10. 游戏开发设计模式之命令模式(unity3d 示例实现)

    博主才学尚浅,难免会有错误,尤其是设计模式这种极富禅意且需要大量经验的东西,如果哪里书写错误或有遗漏,还请各位前辈指正. 打 算写设计模式的目的就是,首先自己可以理清思路,还有就是国内的设计模式资料很 ...