《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()

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM