Python_DB_Api
python DB API
内容
- 建立连接connection
- 数据库交互对象cursor
- 数据库异常类exception
流程
- 创建connection
- 获取cursor
- 执行查询、执行命令、获取数据、处理数据
- 关闭cursor 关闭connection
import MySQLdb
print MySQLdb
Python 开发mysql
- Python 代码(包含SQL语句)+ Eclipse +Mysql for python
- Mysql 服务器 + SQLyog
DB Api -数据库连接对象connection
连接对象:建立Python客户端与数据库的网络连接
创建方法:MySQLdb.Connect(参数)
- host 字符串 mysql服务器地址
- port 数字 mysql服务器端口号
- user 字符串 用户名
- password字符串 密码
- db 字符串 数据库名称
- charset字符串 连接编码
connection 对象支持方法
- cursor() 使用该连接创建并返回游标
- commit() 提交当前事务
- rollback() 回滚当前事务
- close() 关闭连接
实例
import MySQLdb
conn = MySQLdb.Connect(
host='127.xxx',
port=3306,
user='root',
passwd='xxxx'
db='testli'
charset='utf8'
)
cursor=conn.cursor()
print conn
print corsor
cursor.close()
conn.close()
数据库游标对象cursor
- 游标对象: 用于执行查询和获取结果
- cursor对象支持的方法:
- execute(op[,args]) 执行一个数据库查询和命令
- fetchone() 取得结果的下一行
- fetchmany(size) 获取结果集的下几行
- fetchall() 获取结果集中剩下的所有行
- rowcount 最近一次execute返回数据的行数或者影响行数
- close() 关闭游标对象
- execute方法:执行SQL、将结果从数据库获取到客户端
execute(sql) 执行SQL(数据库) 结果 缓存到本地客户端
- fetch*() 方法:移动rownumber,返回数据,操作对象是本地缓存数据
fetchone()
fetchmany(3)
fetchall()
实例 select查询数据
步骤:
1. 创建connection
2. 获取cursor
3. 使用cursor.execute() 执行select语句
4. 使用cursor.fetch*() 获取并处理数据
5. 关闭cursor 关闭connection
- 新建table
CREATE TABLE 'user'(
'userid' INT(11) NOT NULL AUTO_INCREMENT,
'username' VARCHAR(100) DEAULT NULL,
PRIMARY KEY ('userid)
)ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
- 进行操作测试
import MySQLdb
conn = MySQLdb.Connect(
host='127.xxx',
port=3306,
user='root',
passwd='xxxx'
db='testli'
charset='utf8'
)
cursor=conn.cursor()
sql="select * from user"
cursor.execute(sql)
print corsor.row.count
rs = cursor.fetchone()
print rs
rs = cursor.fetchmany(3)
print rs
rs = cursor.fetchall()
print rs
cursor.close()
conn.close()
结果:
9
(1L,u'name1')
((2L,u'name2'),(3L,u'name3'),(4L,u'name4'))
((5L,u'name5'),(6L,u'name6'),(7L,u'name7'),(8L,u'name8'),(9L,u'name9'))
- 传递变量
import MySQLdb
conn = MySQLdb.Connect(
host='127.xxx',
port=3306,
user='root',
passwd='xxxx'
db='testli'
charset='utf8'
)
cursor=conn.cursor()
sql="select * from user"
cursor.execute(sql)
rs = cursor.fetchall()
for row in rs:
print "userid=%s,username=%s" % row
cursor.close()
conn.close()
结果:
userid=1,username=name1
userid=2,username=name2
userid=3,username=name3
userid=4,username=name4
userid=5,username=name5
userid=6,username=name6
userid=7,username=name7
userid=8,username=name8
userid=9,username=name9
实例 insert、update/delete更新数据库
1. 创建connection,并获取cursor;
2. 使用cursor.execute()执行insert/update/delete语句;
3. 判断是否出现异常,IF FALSE,使用conn.commit()提交事务;IF True,使用conn.rollback() 回滚事务;
4. 关闭cursor 关闭connection
事务:访问和更新数据库的一个程序执行单元
* 原子性:事务中包括的诸操作要么都做,要么都不做;
* 一致性: 事务必须使数据库从一致性状态变到另一个一致性状态
* 隔离性:一个事务的执行不能被其他事务干扰
* 持久性:事务一旦提交,它对数据库的改变就是永久性的
开发中怎样使用事务?
- 关闭自动commit:设置conn.autocommit(False)
- 正常结束事务:conn.commit()
- 异常结束事务:con.rollback()
import MySQLdb
conn = MySQLdb.Connect(
host='127.xxx',
port=3306,
user='root',
passwd='xxxx'
db='testli'
charset='utf8'
)
cursor=conn.cursor()
sql_insert="insert into user(userid,username) values(10,'name10)"
sql_update="update user set username='name91' where userid = 9"
sql_delete="delete from user where userid<3"
cursor.execute(sql_insert)
print cursor.rowcount
cursor.execute(sql_update)
print cursor.rowcount
cursor.execute(sql_delete)
print cursor.rowcount
conn.commit()
cursor.close()
conn.close()
Python_DB_Api的更多相关文章
- 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
- Rabbitmq -Publish_Subscribe模式- python编码实现
what is Exchanges ?? Let's quickly go over what we covered in the previous tutorials: A producer is ...
- Python基础复习_Unit one
一. 编译&&安装Python2.7 1.安装python第三方模块管理工具 easy_install --->> easy_install-2.7 pip Ipy ...
- 研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)
一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 import string import cP ...
- python自动开发之(ajax)第二十天
1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_view() / ...
- 零基础学Python--------第2章 Python语言基础
第2章 Python语言基础 2.1 Python语法特点 2.11注释 在Python中,通常包括3种类型的注释,分别是单行注释.多行注释和中文编码声明注释. 1.单行注释 在Python中,使用 ...
- python套接字解决tcp粘包问题
python套接字解决tcp粘包问题 目录 什么是粘包 演示粘包现象 解决粘包 实际应用 什么是粘包 首先只有tcp有粘包现象,udp没有粘包 socket收发消息的原理 发送端可以是一K一K地发送数 ...
- Python实现将爱词霸每日一句定时推送至微信
前言 前几天在网上看到一篇文章<教你用微信每天给女票说晚安>,感觉很神奇的样子,随后研究了一下,构思的确是巧妙.好,那就开始动工吧!服务器有了,Python环境有了,IDE打开了...然而 ...
- Python学习--------------Atm+购物车系统
一.程序需求 模拟实现一个ATM + 购物商城程序: 1.额度 15000或自定义 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.每月22号出账单,每月10号 ...
随机推荐
- Python版本2.7切3.5和3.5切2.7
在Ubuntu上是自带Python2.7和3.5的 当你在终端输入Python的时候是显示Python2.7的 叫大家你怎么切换到Python3.5版本 1,查看是否存在python3.5终端输入 c ...
- codevs1022 覆盖[Hungary 二分图最大匹配]
codevs1022 覆盖 有一个N×M的单位方格中,其中有些方格是水塘,其他方格是陆地.如果要用1×2的矩阵区覆盖(覆盖过程不容许有任何部分重叠)这个陆地,那么最多可以覆盖多少陆地面积. 输入描述 ...
- shell脚本仅列出当前目录下的文件及文件夹
#!/bin/bash function ergodic(){ ` # do # "/"$file ] # then # ergodic $"/"$file # ...
- Java 数组基础
数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...
- 关于DOS与cmd(windows系统)
dos是计算机的最初期的操作系统,对电脑操作必须输入各种dos命令窗口,可以理解成运行计算机机器内部语言,知道编程吗?其实早期dos命令操作系统就是运行计算机内部的编程命令,因此操作人员都必须具有一定 ...
- Good Bye 2016 //智商再次下线,边界爆炸.....
A B很水就略了.. C.又是一次wannafly一样的判断区间的..... 边界设为2000000 正好GG...... fst的时候立马想到上次也是这么wa过的...... 所以下次遇到这种题 ...
- 面向对象和面向过程的js版选项卡
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- 分布式缓存Redis使用心得
一.缓存在系统中用来做什么 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景. 2. 海量数据存储, ...
- 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,
转自:http://www.cnblogs.com/ranranblog/p/5845010.html 风口之下,猪都能飞.当今中国股市牛市,真可谓“错过等七年”. 给你一个回顾历史的机会,已知一支股 ...
- Mongo运行错误:Failed to connect 127.0.0.1:27017,reason:errno:10061由于目标计算机积极拒绝,无法连接
Mongo运行错误:如下 原因是mongodb的服务没有开启,开启服务后问题就能解决了,开启服务命令:mongod --dbpath "d:\mongodb\data 只要操作mongodb ...