python学习笔记(十 二)、操作数据库
每一种语言都少不了多数据库进行各种操作。
python支持多种数据库。有关python支持的数据库清单,请参阅:https://wiki.python.org/moin/DatabaseInterfaces
1 全局变量
所有与DB API2.0兼容的数据库模块都必须包含三个全局变量,它们描述了模块的特征。这样设计,是的API设计更加灵活,无需进行太多包装就能配合多种不同的底层机制使用。
变量 apilevel :使用的Python DB API版本,如果没有这个变量,就说明模块不予DB API 2.0兼容。
变量 threadsafety :模块的线程安全程度。该值是一个0~3 ( 含 )的整数。0表示线程不能共享模块,3表示模块是绝对线程安全的。1表示线程可共享模块本身,但不能共享连接,2表示可以共享模块和连接,但不能共享游标。
变量 paramstyle :在SQL查询中使用哪种参数风格。
'format'表示标准的字符串格式化,如要在参数中进行拼接的地方插入%s。
'pyformat'表示扩展的格式代码,即旧式字典插入,比如%(foo)s。
'qmark'使用问号。
'numeric'使用 :1 和 :2 这样形式表示字段(数字表示参数的编号)。
'named'表示foobar这样的字段,其中foobar为参数名。
2 异常
DB API 定义了多种异常,让你能够细致的处理错误。如:
StandardError:所有异常的超类
Warning:所有非致命问题时引发
Error:所有错误条件的超类
InterfaceError:与接口相关的错误
DatabaseError:与数据库相关的错误的超类
DataError:与数据库相关的问题,如值不在合法的访问内
OperationalError:数据库操作内部的错误
3 连接和游标
要使用底层的数据库系统,必须使用函数connect进行连接。函数connect的常用参数如下:
参数名 描述 是否可选
dsn 数据库名称,具体含义随数据库而异 否
user 用户名 是
password 密码 是
host 主机名 是
port 端口号 是
database 数据库名称 是
函数connect返回一个连接对象,表示当前到数据库的会话。连接对象支持如下方法:
close():关闭连接对象。
commit():提交未提交的事务----如果支持的话;否则什么都不做
rollback():回滚为提交的事务(可能不可用)
cursor():返回连接的游标对象
方法cursor返回一个游标对象,可以使用该对象来执行SQL查询和查看结果。游标对象的方法如下:
callproc(name,[, params]) 使用指定的参数调用指定的数据库过程(可选)
close() 关闭游标
execute(oper[, params]) 执行一个SQL操作-----可指定参数
executemany(oper, pseq) 执行执行的SQL操作多次,每次都取序列pseq中的一组参数
fetchone() 以序列的方式取回查询结婚中的下一行;如果没有更多的行,返回None
fetchmany([size]) 取回查询结果中的多行,其中参数size的值默认为arraysize
fetchall() 以序列的方式取回余下的所有行
nextset() 跳到下一个结果集,这个方法是可选的
setinputsizes(sizes) 用于为参数预定义内存区域
setoutputsize(size[, col]) 为取回大量数据而设置缓冲区长度
4 类型
对于插入到某些类型的列中的值,DB API 定义了一些构造函数和常量,用于提供特殊的类型和值。
名称 描述
Date(year, month, day) 创建包含日期值的对象
Time(hour, minute, second) 创建包含时间值的对象
Timestamp(year, mon, day, h, min, s)创建包含时间戳的对象
DateFromTicks(ticks) 根据从新纪元开始过去的秒数创建包含日期值的对象
TimeFromTicks(ticks) 根据从新纪元开始过去的秒数创建包含时间值的对象
imestampFromTicks(ticks) 根据从新纪元开始过去的秒数创建包含时间戳的对象
Binary(string) 创建包含二进制字符串值得对象
STRING 描述基于字符串的列(如CHAR)
BINARY 描述二进制列(如LONG、RAW)
NUMBER 描述数字列
DATETIME 描述日期/时间列
ROWID 描述行ID列
5 操作数据库
要是用Python来操作数据库,一般分为下面几个步骤:
1.导入相应的数据库模块。
2.使用connect连接数据库。
3.获取操作游标。
4.使用游标执行增删改查(CRUD)语句。
5.可能还需要提交事务,使用commit方法。
6.关闭连接close。
python学习笔记(十 二)、操作数据库的更多相关文章
- 【Python学习之十】操作数据库
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 操作mysql数据库 1.安装pymysql模块p ...
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- python 学习笔记(十二) 文件和序列化
python 文件读写和序列化学习.## python文件读写`1 打开并且读取文件` f = open('openfile.txt','r') print(f.read()) f.close() ` ...
- python 学习笔记十二 html基础(进阶篇)
HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分.网页文件本身 是一种文本文件,通过在文本文件中添加标记符, 可以告诉浏览 ...
- Python学习笔记十二
HTML全称:Hyper Text Markup Language超文本标记语言 不是编程语言 HTML使用标记标签来描述网页 2. HTML标签 开始标签,结束标签. 例如:<html&g ...
- python学习笔记十二:类的定义
demo #!/usr/bin/python class Person: name = 'jim' age = 25 def say(self): print 'My name is ' + self ...
- python学习笔记(十二)-网络编程
本文结束使用 Requests 发送网络请求.requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到.可以说,Requests 完全满足如今网络的需求. ...
- python 学习笔记十二 CSS基础(进阶篇)
1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
随机推荐
- go语言指针理解
- CentOS7设置SVN自启动,提交报错,无权限.手动kill掉后重启,成功.
参考文档:http://tieba.baidu.com/p/5174054662 最近想尝试在CentOS7上搭建SVN服务.遇到的问题大致如题,我这边再详细描述一下. 虚拟机:VMware® Wor ...
- 在ASP.NET Core中使用brotli压缩
Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比.据谷歌研究,Brotli压缩速度同zlib的Deflate实现大致相同,而在Canterbury语料库上的压缩密度比LZ ...
- 解决localdb中文智能的问题
declare @database nvarchar(100) declare tmpCur cursor for select DB_NAME() open tmpCur fetch next fr ...
- [Swift]LeetCode256.粉刷房子 $ Paint House
There are a row of n houses, each house can be painted with one of the three colors: red, blue or gr ...
- [Swift]LeetCode718. 最长重复子数组 | Maximum Length of Repeated Subarray
Given two integer arrays A and B, return the maximum length of an subarray that appears in both arra ...
- [Swift]LeetCode765. 情侣牵手 | Couples Holding Hands
N couples sit in 2N seats arranged in a row and want to hold hands. We want to know the minimum numb ...
- grep的正则表达式结合的几个典型应用
一 几个特殊的字符: ^ :只匹配行首 如^a 匹配以a开头的行abc,a2e,a12,aaa,...... example: grep "^a" //列出所有以a开头的行 $ ...
- Underscore.js 源码学习笔记(上)
版本 Underscore.js 1.9.1 一共 1693 行.注释我就删了,太长了… 整体是一个 (function() {...}()); 这样的东西,我们应该知道这是一个 IIFE(立即执行 ...
- JVM内存知识备忘
又是一篇备忘... 主要记录一些知识,进行一些资源的汇总. 先来群里liufor大大提供的两张图,清晰易懂: Dockerized Java https://www.youtube.com/watch ...