Python_DB_Api

python DB API

内容

  1. 建立连接connection
  2. 数据库交互对象cursor
  3. 数据库异常类exception

流程

  1. 创建connection
  2. 获取cursor
  3. 执行查询、执行命令、获取数据、处理数据
  4. 关闭cursor 关闭connection
import MySQLdb
print MySQLdb

Python 开发mysql

  1. Python 代码(包含SQL语句)+ Eclipse +Mysql for python
  2. 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

  1. 新建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
  1. 进行操作测试
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'))
  1. 传递变量
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()

posted @ 2016-06-30 22:40  li_volleyball  阅读(502)  评论(0编辑  收藏  举报