如果提到资料, 很多时会想起 MySQL, MariaDB, PostgreSQL 等, 而 SQLite 是一个轻量嵌入式数据库, 它包含在一个相对小的 C 程式库里面, 并支援大多数 SQL 标准。
跟 MySQL 这些数据库系统不同, SQLite 不会以系统服务的方式执行.
Python 默认内建的 Sqlite3 模组可以对 sqlsite 数据库管理。
连接数据库
以下 Python 程式码会连接 sqlsite 数据库, 如果 sqlsite 的数据库不存在, 它会自动建立:
|
1 2 3 4 5 6 7 |
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database connected!"; |
建立资料表
一般上可以在系统安装 SQLite 的工具, 用作建立或管理资料表, 如果没有的话, 在 Python 也可以建立资料表, 跟执行 sqlite 指令一样, 使用 execute(), 而建立资料表的语法跟 MySQL 差不多:
|
1 2 3 4 5 6 7 8 9 10 11 |
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database connected!"; conn.execute('create table user (id varchar(20) primary key, name varchar(20), email varchar(50))') print "Created table user"; conn.close() |
当以上程式执行后, 会建立 “user” 资料表.
插入资料
插入资料同样使用 execute(), 只是在插入资料后执行 commit():
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database connected!"; conn.execute("insert into user values (1, 'member1', 'member1@email.tld')"); conn.execute("insert into user values (2, 'member2', 'member2@email.tld')"); conn.execute("insert into user values (3, 'member3', 'member3@email.tld')"); conn.commit() print "Created records"; conn.close() |
SELECT 读取资料
以下是在 Sqlite 数据库读取资料的写法:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database connected!"; cursor = conn.execute("SELECT id, name, email from user") for row in cursor: print "ID = ", row[0] print "Name = ", row[1] print "Email = ", row[2], "\n" conn.close() |
UPDATE 更新资料
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database connected!"; conn.execute("UPDATE user set name = 'new-name' where id = 1") conn.commit() print "Total number of rows updated :", conn.total_changes print "Operation done successfully"; conn.close() |
DELETE 删除资料
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Opened database successfully"; conn.execute("DELETE from user where id = 2;") conn.commit() print "Total number of rows deleted :", conn.total_changes print "Operation done successfully"; conn.close() |