《Python操作SQLite3数据库》快速上手教程

为什么使用SQLite数据库?

对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是大多数复杂的数据驱动的应用需要全功能的关系型数据库。SQLite的目标则是介于两者之间的中小系统。它有以下特点:

  • 轻量级
  • 速度快
  • 无需部署
  • 没有服务器
  • 很少或不需要进行管理

SQLite正在迅速流行起来,并且它还适用于不同的平台。Python 2.5中引入了SQLite数据库适配器作为sqlite3模块,这是Python首次将数据库适配器纳入到标准库中。

SQLite被打包到Python的标准库中,并不是因为它比其他数据库和适配器更加流行,而是因为它足够简单,像DBM模块一样使用文件(或内存)作为其后端存储,不需要服务器,也没有许可证的问题。它是Python中其他类似的持久化存储解决方案的一个替代品,不过除此以外,它还拥有SQL接口。

在标准库中拥有该模块,可以使你在Python中使用SQLite开发更加快速,并且使你在有需要的时候,能够更加容易地移植到更加强大的RDBMS(比如MySQLPostgreSQLOracleSQL Server)中。如果你不需要那些强大的数据库,那么sqlite3已经是很好的选择了。

   

我们接下来演示几个常用操作:

  • 创建数据库
  • 创建表
  • 在表中插入行
  • 更新表中的行
  • 删除表中的行
  • 删除表

   

代码结构如下:

(笔者提示:如果你也用的是Windows平台,可以安装一个工具叫DB Browser for SQLite,可以查看数据库文件里面的表结构和数据,非常方便)

   

SQLite3的使用,sqlite3_create.py的代码如下:

 1 #!/usr/bin/python
 2 import sqlite3
 3 
 4 conn = sqlite3.connect('test.sqlite')
 5 
 6 print "opened database successfully"
 7 conn.execute("drop table COMPANY")
 8 
 9 conn.execute('''CREATE TABLE COMPANY
10        (ID INT PRIMARY KEY     NOT NULL,
11         NAME           TEXT    NOT NULL,
12         AGE            INT     NOT NULL,
13         ADDRESS        CHAR(50),
14         SALARY         REAL);''')
15 
16 print "Table created successfully"
17 
18 conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
19       VALUES (1, 'Paul', 32, 'California', 20000.00 )")
20 
21 conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
22       VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
23 
24 conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
25       VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")
26 
27 conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
28       VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
29 
30 conn.commit()
31 conn.close()

 

从已有的的test.sqlite 文件中,读取数据,sqlite3_select.py的代码如下:

 

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 import sqlite3
 4 
 5 conn = sqlite3.connect('test.sqlite')
 6 
 7 print "opened database successfully"
 8 
 9 cur = conn.cursor()
10 
11 cur.execute("SELECT id,name,age FROM COMPANY;")
12 
13 
14 for item in cur.fetchall():
15     print item
16 
17 conn.commit()
18 conn.close()

   

posted @ 2016-11-01 14:05  牛棚琐思  阅读(5448)  评论(1编辑  收藏  举报

牛棚锁思 | 改变习惯的一点点