第二十一章 数据库编程
本章的主题是如何通过 Python 访问关系型数据库(RDBMS)
阅读本章读者须掌握基本的数据库操作和 SQL 语言,这部分相关内容请查阅相关的数据库 方面的书籍
Python 数据库 API:Python 能够直接通过数据库接口,也可以通过 ORM(需要自己书写SQL) 来访问关系数据库
Python 应用程序(嵌入 SQL) -- Python DB 接口程序 — RDBMS 客户端库 — 关系数据库
DB-API:这是一个规范。它定义了一系列必需的对象和数据库存取方式, 以便在各种各样 的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。
DB-API 模块属性
属性名 | 描述 |
apilevel | 模块兼容的 DB-API 版本号 |
threadsafety | 线程安全级别 |
paramstyle | 该模块支持的 SQL 语句参考风格 |
connect() | 连接函数 |
连接对象: 要与数据库通信,必须先和数据库建立连接。连接对象用于处理将命令送 往服务器,以及从服务器接受数据等基本功能。
游标对象: 允许用于执行数据库命令和得到查询结果。
对于不支持游标的数据库来说, connect 对象的 cursor()方法仍然会返回 一个尽量模仿游标对象的对象。
游标对象最重要的属性是 execute*()和fetch*(),所有对数据库服务器的 请求均由它们来完成。
Python 到底支持哪些平台下的数据库?答案是几乎所有!
以 MySQL 举例:
>>> import MySQLdb
>>> cxn = MySQLdb.connect(user=’rooot’)
>>> cxn.query(‘CREATE DATABASE test’)
>>> cxn.commit()
>>> cxn.close()
-----------------
>>> cxn = MySQLdb.connect(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
>>> for data in cur.fetcharall():
print ‘%s\t%s’ % data
john 7000
>>> cur.close()
>>> cxn.commit()
>>> cxn.close()
ORM:对象-关系管理器
考虑对象,而不是 SQL
Python 和 ORM:最著名的 Python ORM 模块是 SQLAlchemy 和 SQLObject