关系型数据库
数据库服务器(database server),数据库(database)和数据(data)
SQL
SQL是一种声明式语言,是关系型数据库的通用语言。
SQL语句主要有两种类型:
DDL(数据定义语言):处理用户、数据库以及表单的创建、删除、约束和权限等。
DML(数据操作语言):处理数据插入、选择、更新和删除。
DB-API
应用程序编程接口(API)是访问某些服务的函数集合。DB-API(http://legacy.python.org/dev/peps/pep-0249/)是Python中访问关系型数据库的标准API。
它的主要函数如下:
.connect() 连接数据库,包含参数用户名、密码、服务器地址,等等。
cursor() 创建一个cursor对象来管理查询
execute()和executemany() 对数据库执行一个或多个SQL命令
fetchone()、fetchmany()、fetchall() 得到execute之后的结果。
SQLite
SQLite(http://www.sqlite.org)是一种轻量级、优秀的开源关系型数据库。它用Python的标准库实现,并存储数据再普通的文件中。这些文件在不同机器和操作系统之间是可移植的。该数据库仅支持原生SQL以及多用户并发操作。浏览器、智能手机和其他应用会把SQLite作为嵌入数据库。
首先使用connect()函数连接本地的SQLite数据库文件,这个文件和目录型数据库是等价的。 字符串’:memory:’仅用于在内存中创建数据库,有助于方便快速地测试。 下一个例子会创建一个数据库enterprise.db和表单zoo用于管理宠物动物园业务。
表单的列如下:
. critter 可变长度的字符串,作为主键。 . count 某动物的总数的整数值。 . damages 人和动物的互动中损失的美元数目。
创建数据库 enterprise.db
>>> import sqlite3
>>> conn = sqlite3.connect('enterprise.db')
>>> curs = conn.cursor()
>
创建表单zoo
>>> curs.execute('''CREATE TABLE zoo
(critter VARCHAR(20) PRIMARY KEY,
count INT,
damages FLOAT)''')
<sqlite3.Cursor object at 0x01EDA720>
插入数据的方法一
>>> curs.execute('INSERT INTO zoo VALUES("duck",5,0.0)')
<sqlite3.Cursor object at 0x01EDA720>
>>> curs.execute('INSERT INTO zoo VALUES("bear",2,1000.0)')
<sqlite3.Cursor object at 0x01EDA720>
更安全的placeholder插入数据方法二
>>> ins = 'INSERT INTO zoo (critter,count,damages) VALUES(?,?,?)'
>>> curs.execute(ins,('weasel',1,2000.0))
<sqlite3.Cursor object at 0x01EDA720>
>>> curs.execute(ins,('weasel',1,2000.0))
<sqlite3.Cursor object at 0x01EDA720>
查询表单zoo
>>>