嵌入式数据库SQLite本身是一个文件,由C写成,具有体积小的优点,便于集成到各种应用程序中。
主要学习调用Python中的sqlite3模块使用SQLite数据库,Python 2.5.x 以上版本默认自带了该模块。
tips:
表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表.表和表之间通过外键关联。
要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;
连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。
sqlite3模块API
sqlite3.connect(database [,timeout, other optional arguments])
当一个数据库被多个连接访问,且其中一个修改了数据库,此时 SQLite 数据库被锁定,直到事务提交。timeout 参数表示连接等待锁定的持续时间,直到发生异常断开连接。timeout 参数默认是 5.0(5 秒)
如果给定的数据库名称 filename 不存在,则该调用将创建一个数据库。
connection.cursor([cursorClass])
- 创建一个 cursor
cursor.execute(sql [, optional parameters])
- 执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问号和命名占位符(命名样式)。
- e.g.cursor.execute(“insert into people values (?, ?)”, (who, age))
connection.commit()
- 该方法提交当前的事务。如果未调用该方法,那么自上一次调用 commit() 以来所做的任何动作对其他数据库连接来说是不可见的。
connection.close()
- 该方法关闭数据库连接。不会自动调用 commit()。如果未调用 commit() 方法就直接关闭数据库连接,所做的所有更改将全部丢失。
常用语句及操作
创建表
CREATE TABLE 语句的基本语法如下:
1 | CREATE TABLE database_name.table_name( |
e.g.
1 | import sqlite3 |
该实例创建了一个 COMPANY 表,ID 作为主键,NOT NULL 的约束表示在表中创建纪录时这些字段不能为 NULL.
Insert语句
基本语法:
1 | INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] |
也可直接为表中的所有列添加值(需确保值的顺序与列在表中的顺序一致):
1 | INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN); |
e.g.
1 | conn = sqlite3.connect('test.db') |
SELECT语句
基本语法:
1 | SELECT column1, column2, columnN FROM table_name; |
column1, column2…是表的字段。如果需要获取所有可用的字段,那么可以使用下面的语法:
1 | SELECT * FROM table_name; |
e.g.
1 | conn = sqlite3.connect('test.db') |
WHERE子句
SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件。用于过滤记录,可用在 SELECT、UPDATE、DELETE 等语句中。
带有 WHERE 子句的 SELECT 语句的基本语法如下:
1 | SELECT column1, column2, columnN |
e.g.
1.运用比较运算符指定条件
1 | SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000 |
2.运用逻辑运算符NOT
如列出 AGE 不为 NULL 的所有记录
1 | SELECT * FROM COMPANY WHERE AGE IS NOT NULL |
3.运用逻辑运算符LIKE
如列出 NAME 以 ‘Ki’ 开始的所有记录,’Ki’ 之后的字符不做限制:
1 | SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%' |
4.
列出 AGE 的值为 25 或 27 的所有记录:
1 | SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 ) |
5.
列出 AGE 的值在 25 与 27 之间的所有记录:
1 | SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27 |