python高级之操作数据库
python高级之操作数据库
本节内容
- pymysql介绍及安装
- 使用pymysql执行sql
- 获取新建数据自增ID
- fetch数据类型设置
1.pymysql介绍及安装
在python2中连接数据库使可以使用mysqldb模块,为什么在python3中使用pymysql模块呢?因为在python2中mysqldb和pymysql都可以操作数据库,但是当python升级到3以后,pymysql模块支持python3了,但是mysqldb模块目前还不支持python3,所以用python3的小伙伴们还是先用pymysql吧。pymysql和mysqldb的使用方法基本相同。
安装pymysql可以使用pip安装:
pip3 install pymysql
安装完成之后在python解释器中执行import pymysql如果不报错说明安装成功了。
2.使用pymysql执行sql
import pymysql # 导入模块 conn=pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="",db="sql_example",charset="utf8")
# 注意,这里传入的参数必须是关键字参数,不能省略关键字,否则将连接不上数据库
# conn.autocommit() # 如果设置了这个属性,则会自动commit sql语句,而不需要手动commit
cursor=conn.cursor() # 创建游标
# cursor.execute("insert into class(caption) values('全栈二班')") r=cursor.execute("select * from class") # 执行查询语句并返回查询的数据行数
print(r) # 打印行数
# print(cursor.fetchall()) # 打印返回的所有数据,数据结构是元祖套元祖((),()),里面的一个元祖就是一行数据
# print(cursor.fetchmany(num)) # 打印返回的num条数据,数据结构是元祖套元祖((),()),里面的一个元祖就是一行数据
print(cursor.fetchone()) # 打印返回的数据中第一行数据,结构是只有一个元祖
cursor.scrroll() # 修改游标的位置 conn.commit() # 手动提交要执行的sql
cursor.close() # 关闭游标
conn.close() # 关闭连接
注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:
- cursor.scroll(1,mode='relative') # 相对当前位置移动
- cursor.scroll(2,mode='absolute') # 相对绝对位置移动
3.获取新建数据自增ID
conn = pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="",db="sql_example",charset="utf8")
cursor = conn.cursor()
cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
## executemany可以执行多条插入语句,后面接的数据需要是一个可迭代的对象,一般是列表里面套元祖或列表
conn.commit()
cursor.close()
conn.close() # 获取最新自增ID
new_id = cursor.lastrowid # 通过cursor.lastrowid可以获取获取最新行的自增ID
表里面只能有一个字段设置为自增ID。。。
4.fetch数据类型设置
关于默认获取的数据是元祖类型,如果想要获得字典类型的数据,即:
conn = pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="",db="sql_example",charset="utf8") # 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.execute("call p1()") result = cursor.fetchone() conn.commit()
cursor.close()
conn.close()
python高级之操作数据库的更多相关文章
- 第九篇:python高级之操作数据库
python高级之操作数据库 python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及 ...
- python MySQLdb用法,python中cursor操作数据库(转)
数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...
- Python 高级网络操作 - Python Advanced Network Operations
Python 高级网络操作 - Python Advanced Network Operations Half Open Socket, 一个单向的 socket 被称为 half open sock ...
- python中cursor操作数据库(转)
原文出处:http://doudouclever.blog.163.com/blog/static/175112310201284115340663/ python 操作数据库,要安装一个Python ...
- 10 python学习笔记-操作数据库(十)
在功能.接口测试中,常常需要通过数据库的操作,来准备数据.检测环境及核对功能.接口的数据库操作是否正确. 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备. 环境检查及数据库断言的功能.数据 ...
- Python教程:操作数据库,MySql的安装详解
各位志同道合的同仁请点击上方关注 本教程是基于Python语言的深入学习.本次主要介绍MySql数据库软件的安装.不限制语言语法,对MySql数据库安装有疑惑的各位同仁都可以查看一下. 如想查看学习P ...
- python通过cx_oracle操作数据库过程简单记录
1.环境配置 环境配置过程中,需要关注软件版本是否一致,主要包括:oracle客户端版本.cx_oracle版本.python版本: 2.操作记录 (1)验证环境是否正常:(无报错即为正常) impo ...
- Python 连接、操作数据库
使用python3+pymysql 一.安装python3 a) 从网上下载安装吧 二.安装pymysql https://pypi.python.org/pypi/PyMySQL h ...
- Python使用PyMysql操作数据库
安装 pip install -U pymysql 连接数据库 连接数据库有两种不同的格式 直接使用参数 代码如下 import pymysql.cursors connection = pymysq ...
随机推荐
- JS与Jquery区别
很多人对JS和JQuery很容易搞混淆,今天我们就相比学习下: 加载区别: var myfunction(){}; JS:1.window.onload=function(){} 2.<body ...
- 十一个行为模式之访问者模式(Visitor Pattern)
定义: 提供一个作用于某对象结构(通常是一个对象集合)的操作的接口,使得在添加新的操作或者在添加新的元素时,不需要修改原有系统,就可以对各个对象进行操作. 结构图: Visitor:抽象访问者类,对元 ...
- 学习Javascript闭包(Closure)
闭包作用 1.让变量驻留在内存中 2.函数外部可以读取函数内部的私有变量 <!DOCTYPE html> <html lang="en"> <head ...
- ios页面过渡效果插件Kontext
效果体验:http://keleyi.com/keleyi/phtml/html5/28.htm 以下是代码: <!doctype html> <html> <head& ...
- iOS 修改状态栏字体的颜色
在实际开发中,状态栏有时,需要我们自己设置: 比如: 默认状态栏 假如我们开发的view是黑色的,那么效果如图: 状态栏是白底黑字,下面的view是黑底? 这样子真的好吗?说好的和谐社会呢?说好的开发 ...
- Day Tips:alertstemplates.xml
1.修改Alert邮件模板,首先要注意的时候最好复制一份alertstemplates.xml,然后改一下名字,我改的是 custom_alertstemplates.xml,修改自己需要的代码部分. ...
- Android 一个对sharedpreferences 数据进行加密的开源库
1.项目地址 https://github.com/iamMehedi/Secured-Preference-Store 2.使用方法 2.1.存数据 //存数据 SecuredPreferenceS ...
- 原生JS获取元素集合的子元素宽度
有些时候,在一个网页的ul li中,存在左右两个部分的内容,但是右边元素内容又是不固定,左边元素相对应的不能用固定宽度,所有需要我们动态的获取右边元素宽度,来赋值给左边元素的marginRight值. ...
- IOS开发基础知识--碎片2
六:获得另一个控件器,并实现跳转 UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboa ...
- IOS开发基础知识--碎片41
1:UIWebView加载本地的HTML NSString *path = [[NSBundle mainBundle] bundlePath]; NSURL *baseURL = [NSURL fi ...