Python3操作SQLite數據庫
SQLite
SQLite,是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。它的設計目標是嵌入式的,而且已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界著名數據庫管理系統來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生於2000年5月。 至2019年已經有19個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。[摘自SQLite百度百科]
功能特性
- ACID事務
- 零配置 – 無需安裝和管理配置
- 支持數據庫大小至2TB
- 比一些流行的數據庫在大部分普通數據庫操作要快
- 獨立: 沒有額外依賴
- 支持多種開發語言,C, C++, PHP, Perl, Java, C#,Python, Ruby等
數據類型
- Typelessness(無類型)
- 支持常用的數據庫類型
使用Python3操作SQLite
python2.5以后的安裝包已經自帶SQLite3的軟件包了,所以直接導入使用即可。
import sqlite3
第一步:連接數據庫(如果數據庫不存在就會創建新的數據庫)
# 可以指定創建數據庫的路徑,比如可以寫成sqlite3.connect(r"E:\DEMO.db")
con = sqlite3.connect("DEMO.db")
第二步:創建游標
cur = con.cursor()
第三步:CURD操作
(一) 創建表
sql = "CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)"
cur.execute(sql)
創建完數據庫和表后的結構示意圖:
(二) 添加數據(需要提交)
# ①:添加單條數據
data = "1,'Desire',5"
cur.execute('INSERT INTO test VALUES (%s)' % data)
# ②:添加單條數據
cur.execute("INSERT INTO test values(?,?,?)", (6, "zgq", 20))
# ③:添加多條數據
cur.executemany('INSERT INTO test VALUES (?,?,?)', [(3, 'name3', 19), (4, 'name4', 26)])
操作后的數據庫如下圖:
(三) 更新數據(需要提交)
# 方式一
cur.execute("UPDATE test SET name=? WHERE id=?", ("nihao", 1))
# 方式二
cur.execute("UPDATE test SET name='haha' WHERE id=3")
操作后的數據庫如下圖:
(四) 刪除數據(需要提交)
# 方式一
cur.execute("DELETE FROM test WHERE id=?", (1,))
# 方式二
cur.execute("DELETE FROM test WHERE id=3")
操作后的數據庫如下圖:
(五) 查詢數據
數據庫中的數據如下:
1、查詢所有數據
cur.execute("select * from Test")
print(cur.fetchall())
結果如下:
2、查詢第一條數據
cur.execute("select * from Test")
print(cur.fetchone())
結果如下:
3、查詢多條數據
print(cur.fetchmany(3))
結果如下:
第四步:事務的提交和回滾
提交
con.commit()
回滾
con.rollback()
第五步:斷開會話連接,釋放資源
# 關閉游標
cur.close()
# 斷開數據庫連接
con.close()
關於SQLite數據類型的Typelessness(無類型)
創建一個無類型的表(創建表的SQL語句字段不加類型即可)
sql = "CREATE TABLE IF NOT EXISTS user(clo_1,clo_2,clo_3)"
cur.execute(sql)
創建成功后的結構:
添加數據的時候就可以添加任意類型的數據(沒有限制)
sql = 'INSERT INTO user VALUES (?,?,?)'
data = [(9, 'name3', 19), ('name4', 26, "nihao"), ('nihao', 3, 2.89)]
cur.executemany(sql, data)
con.commit()
添加成功后的表內容:
-----------------------------------------------------------------------------
*以上便是SQLite在Python中簡單的操作,查看表結構可以用Navicat for SQLite可視化工具