19 SQLite轻量级数据库

SQLite数据库是一款非常小巧的内置模块,它使用一个文件存储整个数据库,无需独立的服务器进程,操作十分方便,相比其他大型数据库来说,确实有些差距。但是在性能表现上并不逊色,麻雀虽小,五脏俱全。

Python对SQLite的数据库编程的过程和步骤和MySQL数据库编程的步骤一样,只不过无需安装任何软件,例如SQLite无需安装、接口模块无需安装。直接编程即可。

编程创建数据库文件

#coding:utf-8
import sqlite3
# 连接sqlite并创建数据库文件example.db
conn = sqlite3.connect('example.db')
# 建立游标
c = conn.cursor()
# 创建表stocks
c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''')
# 插入数据
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
# 数据库提交修改
conn.commit()
# 关闭与sqlite的连接
conn.close()

程序执行完毕后,会在和本程序同一目录下产生一个example.db文件。

编程查询数据库

#coding:utf-8
import sqlite3
# 连接sqlite并创建数据库文件example.db
conn = sqlite3.connect('example.db')
# 建立游标
c = conn.cursor()
# executemany提交多条插入记录
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
             ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
             ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
            ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
# 数据库提交插入修改确认,否则数据库表里数据不会更改
conn.commit()
# 从sqlite返回select查询结果
for row in c.execute('SELECT * FROM stocks ORDER BY price'):
        print row
# 关闭与sqlite的连接
conn.close()

程序运行结果如下:

这里需要特别提一下commit函数的作用,如果对数据库无论是MySQL还是SQLite,插入、删除等操作均会影响数据库,编程时尽管提交了insert或者update但是python程序如果不执行commit的话,数据库里的数据信息是不会真正地被修改,只有在python程序执行了commit函数,数据库才真正地更新了数据。