欢迎访问www.showerlee.com, 您的支持就是我前进的动力.

[PYTHON] 核心编程笔记(21.数据库编程)

showerlee 2014-01-04 15:56 Programming, PYTHON 阅读 (7,500) 抢沙发

21.1 介绍

21.1.1 持久存储

21.1.2 基本的数据库操作和SQL语言

底层存储

数据库的底层存储通常使用文件系统,它可以是普通操作系统文件,专用操作系统

文件,甚至有可能是磁盘分区

用户界面

大部分数据库系统会提供一个命令行工具来执行SQL命令和查询,也有一些使用图

形界面

数据库

关系型数据库管理系统通常都支持多个数据库,如果其基于服务器,这些数据库都

在同一台服务器上,本例,MYSQL是一种基于服务器的关系数据库管理系统

组件

你可以将数据库存储想象为一个表格,每行数据都有一个或多个字段对应数据库

的列,每个表每个列及其数据类型的集合构成数据库结构的定义,数据库能够被创

建,也可以被删除

SQL

数据库命令和查询操作需要通过SQL语句来执行

创建数据库和赋予权限

CREATE DATABASE test;

GRANT ALL ON test.* to user(s);

选择要使用的数据库

USE test;

删除数据库

DROP DATABASE test;

创建表

CREATE TABLE users(login VARCHAR(8),uid INT,prid INT);

删除表

DROP TABLE users;

插入行

INSERT INTO users VALUES('leanna',311,1)

更新行

UPDATE users SET prid=4 WHERE prid=2;

UPDATE users SET prid=1 WHERE uid=311;

删除行

DELETE FROM users WHERE prid=%d;

DELETE FROM users;

21.1.3 数据库和Python

21.2 Python数据库应用程序

程序员接口(DB-API)

21.2.1 模块属性

数据属性

属性名描述

apilevelDB-API模块兼容的DB-API版本号

threadsafety线程安全级别

parmstyle该模块支持的SQL语句参数风格

connect()连接函数

MySQLdb.connect(host='dbserv',db='inv',user='smith')

21.2.2 连接对象

要与数据库进行通信,必须先和数据库建立连接,连接对象处理命令如何送往服务

器,以及如何从服务器接收数据等基础功能,连接成功后就能向数据库服务器发送

请求,得到响应

连接对象方法

close()关闭数据库连接

commit()提交当前事务

rollback()取消当前事务

cursor()使用这个连接创建并返回一个游标或类游标的对象

errorhandler(cxn, cur,errcls,errval)

21.2.3 游标对象

当你建立连接之后,就可以与数据库进行交互,一个游标允许用户执行数据库命令

和得到查询结果,一个Python DB-API游标对象总是扮演游标角色,无论数据库是

否真正支持游标,从这一点讲,数据库接口程序必须实现游标对象,只有这样才能

保证无论使用何种后端数据库你的代码都不需要做任何改变

21.2.4 类型对象和构造器

21.2.5 关系数据库

21.2.6 数据库和Python:接口程序

MySQL

# api-get install python-mysql* -y

# python

>>> import MySQLdb                    

>>> cxn = MySQLdb.connect(user='root',passwd='123456')

>>> cxn.query('DROP DATABASE test')  

>>> cxn.query('CREATE DATABASE test')

>>> cxn.query("GRANT ALL ON test.* to 'test'@localhost")

>>> cxn.commit()

>>> cxn.close()

以上代码我们没有使用cursor对象,某些接口程序拥有连接对象,这些连接对象拥

有query()方法,可以执行SQL查询,我们不建议使用这种方法

下面我们使用游标对象(cursors)和他们的execute()方法,下一个交互集演示了

创建表

>>> cxn = MySQLdb.connect(user='root',passwd='123456',db='test')

>>> cur = cxn.cursor()

>>> cur.execute('CREATE TABLE users(login VARCHAR(8), uid INT)')

0L

>>> cur.execute("INSERT INTO users VALUES('john',7000)")

1L

>>> cur.execute("INSERT INTO users VALUES('john',7001)")

1L

>>> cur.execute("INSERT INTO users VALUES('jane',7001)")

1L

>>> cur.execute("INSERT INTO users VALUES('bob',7200)")

1L

>>> cur.execute("SELECT * FROM users WHERE login LIKE 'j%'")

3L

>>> for data in cur.fetchall():

...     print '%s\t%s' % data

...

john    7000

john    7001

jane    7001

最后一个特性是更新表,包括更新或删除数据

>>> cur.execute("UPDATE users SET uid=7100 WHERE uid=7001")

2L

>>> cur.execute("SELECT * FROM users")

4L

>>> for data in cur.fetchall():

...     print '%s\t%s' % data                              

...

john    7000

john    7100

jane    7100

bob     7200

>>> cur.execute("UPDATE users SET uid=7100 WHERE uid= 7000")

1L

>>> cur.execute("SELECT * FROM users")                      

4L

>>> for data in cur.fetchall():                            

...     print '%s\t%s' % data                              

...

john    7100

john    7100

jane    7100

bob     7200

>>> cur.execute('DELETE FROM users WHERE login="bob"')

1L

>>> cur.execute('DROP TABLE users')

0L

>>> cur.close()

>>> cxn.commit()

>>> cxn.close()

21.3 对象-关系管理器(ORMs)

21.3.1 考虑对象,而不是SQL

21.3.2 Python和ORM

21.3.4 总结

21.4 相关模块

正文部分到此结束
版权声明:除非注明,本文由(showerlee)原创,转载请保留文章出处!
本文链接:http://www.showerlee.com/archives/1060

继续浏览:PYTHON

还没有评论,快来抢沙发!

发表评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif