5.1 Interact with SQLite
要和SQLite互动,我们只需要四个最小行动。
参考教程:廖雪峰的Python教程
惊讶地发现,Shippo同学用了费曼方法,非常简单地说明了问题。
一、理解SQLite的定义和特性
Python3中已经内置了SQLite,它是嵌入式数据库,它的数据库就是一个文件,这种数据库嵌入到了应用程序进程中,省去了你配置服务器的开销。
在上一篇文章中我们已经讲过,一个数据库里有很多个表,表是「相关的数据项的几何,它由行和列组成」。各个表有一个名字标识(比如部门编号D1)。
二、和 SQLite 数据库建立连接
要操作数据库,第一步当然是连接了。
>>> import sqlite3 #导入SQLite驱动
>>> conn = sqlite3.connect('test.db')
#连接到SQLite数据库,数据库文件是test.db,如果这个文件不存在,则自动在当前目录创建
三、在SQLite 中建立游标对象?
>>> cursor = conn.cursor() #创建一个cursor
创建cursor以后,对数据库具体的操作由谁来完成呢?当然是SQL语句啦。
四、借助游标执行 SQL 语句?
在借助游标执行SQL语句命令之前,我们先学一下SQL。
番外篇:SQL教程
SQL 是用于访问和处理数据库的结构化查询语言,它使我们有能力访问数据库,它是一种ANSI的标准计算机语言。
假设我们现在要从表中选取LastName列的数据。
SELECT LastName FROM Persons
执行上述代码后,得到的结果是
| LastName |
|---|
| 唐 |
| 孙 |
| 猪 |
| 沙 |
注意:SQL对大小写不敏感。
SQL有两个部分:数据操作语言(DML)和数据定义语言(DDL)。
DML:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
DDL:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
SQL的语法比较简单拿,就不多做介绍了。接下来我们回到正题。
# 创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 继续执行一条SQL语句,插入一条记录:
>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
# 获得表的行数:
>>> cursor.rowcount
# 关闭cursor:
>>> cursor.close()
# 提交事务
>>> conn.commit()
# 关闭conn.close()
>>> conn.close()
# 执行查询语句,查询「1」第一行:
>>> cursor.execute('select * from user where id=?', ('1,'))
注意:在Python中操作数据库时,要先导入数据库对应的驱动,然后,通过Connection对象和Cursor对象操作数据。要确保打开的Connection对象和Cursor对象都正确地被关闭,否则,资源就会泄露。