如何使用自帶的SQLite資料庫
當前流行的資料庫有Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB、Redis、Microsoft Access……SQLite(這個是按某報告調研的受歡迎程度來排名的)。當然每個資料庫都有它最適合的應用場合。這裡我們推薦一款輕型的關係型資料庫SQLite,推薦理由如下:
SQLite本身是C寫,所以體積小巧,佔用資源低
SQLite本身是C寫,所以處理速度非常快
SQLite已經發布SQLite 3 版本
SQLite3支持Windows/Linux/Unix等主流操作系統
Python 2.5.x 以上版本默認內置SQLite3,無需單獨安裝和配置,直接使用!!!
當我們僅僅是用於本地的數據管理,無需多用戶訪問,數據容量小於2T,無需海量數據處理,關鍵是要求移植方便、使用簡單、處理迅速的話, SQLite3確實是個很不錯的選擇。
在Python 2.5.x以上定義了一套操作SQLite3的API介面,使用時需要導入sqlite3模塊,如下所示。
import sqlite3
接下來,我們僅需調用介面就可以,我們用常式來介紹下:
一、連接資料庫
要操作SQLite3首先需要連接到資料庫,介面函數:
sqlite3.connect(database [,timeout ,other optional arguments])
該函數會鏈接到 SQLite3資料庫並返回一個連接對象,如果資料庫不存在,那麼將會自動創建一個資料庫。如下所示:
conn = sqlite3.connect("stock-data.db")
SQLite3是文件型資料庫,可以看到一個SQLite3就是一個文件,備份這個文件就備份了整個資料庫。
在連接到資料庫後,需要建立Cursor,通過Cursor去執行SQL語句,介面函數:
connection.cursor([cursorClass])
使用如下所示:
c = conn.cursor()
二、創建表
資料庫中是以表的形式存放數據的,我們在先前創建的資料庫中創建一個STOCK600123表。可以使用如下介面去執行一個 SQL 語句:
cursor.execute(sql [, optional parameters])
SQL 語句中CREATE TABLE 語句的基本語法如下:
資料庫系統識別到CREATETABLE關鍵字後會創建一個新表。CREATETABLE語句後跟著表的唯一的名稱或標識。如下所示:
創建表後記得提交當前的操作,介面函數:
connection.commit()
整體操作如下所示:
c.execute(PRAGMA table_info(STOCK600123))
print(c.fetchall())
[(0, "ID", "INT", 1, None, 1), (1, "TIME", "TEXT", 1, None, 0), (2, "CODE", "INT", 1, None, 0), (3, "HIGH", "REAL", 0, None, 0), (4, "LOW", "REAL", 0, None, 0), (5, "CLOSE", "REAL", 0, None, 0), (6, "OPEN", "REAL", 0, None, 0), (7, "DESCRIPTION", "CHAR(50)", 0, None, 0)]
三、插入表
我們上面創建的 STOCK600123表中插入4行數據,如下所示:
我們可以查看錶的內容來驗證是否已成功插入四行,如下所示:
c.execute(select * from STOCK600123)
print(c.fetchall())
conn.commit()
[(1, "2019-1-1", 600123, 10.12, 10.12, 10.12, 10.12, "event1"), (2, "2019-1-2", 600123, 10.13, 10.13, 10.13, 10.13, "event2"), (3, "2019-1-3", 600123, 10.14, 10.14, 10.14, 10.14, "event3"), (4, "2019-1-4", 600123, 10.15, 10.15, 10.15, 10.15, "event4")]
四、更新表
當我們需要更新表中的第一行的「CODE」列內容時,可以使用UPDATE 語句,如下所示,600123更新為了600888。
# 更新表
c.execute(UPDATE STOCK600123 set CODE = 600888 where ID=1)
conn.commit()
c.execute(select * from STOCK600123)
print(c.fetchall())
conn.commit()
[(1, "2019-1-1", 600888, 10.12, 10.12, 10.12, 10.12, "event1"), (2, "2019-1-2", 600123, 10.13, 10.13, 10.13, 10.13, "event2"), (3, "2019-1-3", 600123, 10.14, 10.14, 10.14, 10.14, "event3"), (4, "2019-1-4", 600123, 10.15, 10.15, 10.15, 10.15, "event4")]
五、選擇表
從當前創建的 STOCK600123 表中獲取id, time, code, description這四部分信息,如下所示:
六、刪除表
從當前創建的 STOCK600123 表中刪除id為2的信息,只剩下id為1、3、4行的內容,如下所示:
當要刪除STOCK600123整個表時,如下所示:
# 刪除一個表
c.execute(drop table STOCK600123)
conn.commit()
當關閉資料庫連接時,可使用如下介面:
connection.close()
該介面不會自動調用 commit(),如果關閉資料庫連接前未調用 commit() 方法,所有的更改將丟失,切記!
TAG:千鋒JAVA開發學院 |