python数据库编程(1):潦草的开篇

来源:互联网 发布:沈阳沐洋软件 编辑:程序博客网 时间:2024/05/01 16:52

一、前言

关于数据库编程,涉及知识点广而杂,所以我并非一遍就能掌握,这里汲取了我的实践和认识,算是对python数据库编程的做一个铺垫吧。在以后的学习过程中会不断地完善数据库编程的知识点,鉴于此,另当难登大雅之堂的小打小闹作罢。

二、DB-API规范

db-api是一个规范,定义了一系列必需的对象和数据库存取方式,为底层数据库提供一致的接口。
DB-API模块属性如下:
apilevel:模块兼容的DB-API版本号
threadsafety:线程安全级别
paramstyle:支持sql语句参数风格
connect():连接数据库


关于ORM:

 

ORM = Object Relational Mapping
Object是指面向对象的
Relational 是指面向关系数据库
ORM 就是将关系数据库的数据模型变换映射到面向对象的模型的工具
.net中如LINQ to Sql,在python中如SQLAlchemy和SQLObject.

三、connect()函数

connect()方法生成一个connect对象,用于访问数据库,其参数如下:

user:Username
password:Password
host:Hostname
database:DatabaseName
dsn:Data source name

注意并非所有的接口程序都严格按照这种格式,如MySQLdb

复制代码
import MySQLdbconn = MySQLdb.connect(host='192.168.0.1',db='blog',user='root',passwd='123',port=3306,charset='utf8')
复制代码

 

connect()对象方法

close():关闭数据库连接,或者关闭游标对象
commit():提交当前事务
rollback():取消当前事务
cursor():创建游标或类游标对象
errorhandler(cxn,errcls,errval):作为已给游标的句柄

注意,执行close()方法则上述的连接对象方法不能再使用,否则发生异常。commit()rollback()cursor()或许更对于支持事务的数据库更有意义。数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。 一旦你完成了数据库连接,关闭了游标对象,然后在执行commit()提交你的操作,然后关闭连接。

游标对象
上面说了connect()方法用于提供连接数据库的接口,如果要对数据库操作那么还需要使用游标对象。
游标对象的属性和方法:

更多相机文档或《python核心编程》
fetchone():可以看作fetch(取出) one(一个),也就是得到结果集的下一行(一行)。
fetchmany(size):可以看作fetch(取出)many(多个),这里的参数是界限,得到结果集的下几行(几行)
fetchall():顾名思义,取得所有。
execute(sql):执行数据库操作,参数为sql语句。
close():不需要游标时尽可能的关闭。

demo代码如下:

复制代码
#coding=utf-8import MySQLdb          #注意大小写(常写错)'''连接数据库并创建connect方法对象'''conn = MySQLdb.connect(host='127.0.0.1',                       user='root',                       passwd='admin',                       db='blog',                       port=3306,                       charset='utf8')print conn              #<_mysql.connection open to '127.0.0.1' at 25ed738>def mysql():    '''创建游标对象'''    cxn = conn.cursor()    sql = '''SELECT * FROM auth_user'''    cxn.execute(sql)    r1 = cxn.fetchone()    r2 = cxn.fetchmany(2)    r3 = cxn.fetchall()        sql = '''create table blog(id int not null primary key auto_increment,                                title char(30) not null,                                author char(20) null default 'admin'    )'''        cxn.execute(sql)    cxn.close()    conn.commit()    conn.close()    print '===========success!'    if __name__ == '__main__':    print '===========Begin...'    mysql()
0 0
原创粉丝点击