Python自動化操作sqlite數(shù)據(jù)庫
你好,我是悅創(chuàng)。
1. 什么是數(shù)據(jù)庫
數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”,是一個長期存儲在計算機內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合。
數(shù)據(jù)庫是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數(shù)據(jù)集合,可視為電子化的文件柜。
2. 有哪些數(shù)據(jù)庫
2.1 數(shù)據(jù)庫類型
大型數(shù)據(jù)庫:甲骨文Oracle。
分布式數(shù)據(jù)庫:HBase。
中型數(shù)據(jù)庫:SqlServer、Mysql、MariaDB、PostgreSQL、Redis等。
小型數(shù)據(jù)庫:Sqlite、 Access 。
2.2 如何選擇
大集團:Oracle、HBase。
發(fā)展中公司:PostgreSQL、Mysql。
app 的臨時數(shù)據(jù)庫:Sqlite。
2.3 Sqlite
方便攜帶、易于操作、隨時創(chuàng)建、Python 原生支持的小型數(shù)據(jù)庫文件。 輕型的數(shù)據(jù)庫,遵守 ACID 的關系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的 C 庫中。 D.RichardHipp建立的公有領域項目。設計目標是嵌入式的,而且已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百 K 的內(nèi)存就夠了。 支持 Windows/Linux/Unix 等等主流的操作系統(tǒng)。 能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java 等,還有 ODBC 接口。 比起 Mysql、PostgreSQL 這兩款開源的世界著名數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。 第一個 Alpha 版本誕生于 2000年5月。至 2015年已經(jīng)有 15 個年頭,SQLite 也迎來了一個版本 SQLite 3 已經(jīng)發(fā)布。 Python 自帶 sqlite3 這個庫,方便且直接的創(chuàng)建和讀取 sqlite3 數(shù)據(jù)庫。
3. sqlite 創(chuàng)建表格
3.1 sqlitestudio 介紹
本節(jié)內(nèi)容的目的,是教大家如何在非代碼的情況下,創(chuàng)建 sqlite3 數(shù)據(jù)庫文件和表格編輯操作。
既然不寫代碼,就肯定需要借助軟件來操作。本節(jié)課對應的源碼中,準備好了 windows、macos、linux 三個系統(tǒng)的 sqlitestudio 軟件,如下圖:

windows 使用 zip;macos 使用 dmg;linux 使用 tar.xz;
sqlitestudio 是一款綠色軟件,安裝你的操作系統(tǒng)所對應的 sqlitestudio 軟件,然后執(zhí)行,就可以得到啟動界面。

3.2 新建 sqlite 數(shù)據(jù)庫文件
點擊左上角的數(shù)據(jù)庫,選擇添加數(shù)據(jù)庫,則會彈框,讓你選擇某個數(shù)據(jù)庫文件,或者創(chuàng)建一個新的 sqlite 文件

點擊黃色的文件夾,是指打開某個存在的 sqlite 文件。
點擊 綠色的+ ,是新建一個 sqlite 文件,并且你也需要指定存儲的具體位置。
選擇在三個 sqlitestudio 安裝包旁邊,新建一個名為 first.db 的文件,如下截圖:

并且,文件也有對應的生成。

3.3 新增數(shù)據(jù)
回到 sqlitestudio 軟件界面,打開剛新建的 first.db ,里面什么都沒有,表格是空的,現(xiàn)在來新建一個表格。
鼠標右鍵點擊 Tables,然后選擇新建表格,在新出的界面中,寫表格名、字段名和字段類型,如下圖:
方法一:

方法二:



Table Name 表格名,輸入具體名稱。最上方框中的那個按鈕,是增列字段的按鈕,點擊按鈕彈出中間的字段信息,輸入字段名、類型、大小等。
這里寫了id title content author 四個字段信息,然后點擊綠色的勾,保存表格即可。


保存了文件,重新刷新頁面,就可以查看數(shù)據(jù)欄,如下:


點擊綠色的+號,然后增加幾條數(shù)據(jù),方便我們下節(jié)課的代碼練習。圖中有三條。
sqlitestudio 也要保留,方便我們下節(jié)課,查看代碼練習的數(shù)據(jù)變化結(jié)果。
4. Python 鏈接和操作 sqlite
4.1 鏈接和查詢代碼
Python 自身攜帶 sqlite 庫,不需要額外安裝,直接使用即可。導入代碼:
import sqlite3
導入代碼之后,將 first.db 文件,放到代碼文件旁邊。這里用的是 py,所以是把 py 和 first.db 文件放一起,不放一起就只能使用絕對路徑。如下圖:

然后使用 sqlite3 庫,鏈接 first.db 文件,代碼 firstdb = sqlite3.connect('first.db')
正常運行后,寫查詢語句,從數(shù)據(jù)庫中讀取全部數(shù)據(jù),如下代碼:
# 查詢語句
query_sql = "select * from info"
for result in firstdb.execute(query_sql):
print(result)
完整代碼:
# -*- coding: utf-8 -*-
# @Time : 2022/7/17 14:36
# @Author : AI悅創(chuàng)
# @FileName: main.py
# @Software: PyCharm
# @Blog :http://www.aiyc.top
# @公眾號 :AI悅創(chuàng)
import sqlite3
firstdb = sqlite3.connect("first.db")
# 查詢語句
query_sql = "select * from info"
for result in firstdb.execute(query_sql):
print(result)
# firstdb.execute(): Executes an SQL statement./執(zhí)行 SQL 語句。
print(list(firstdb.execute(query_sql)))
輸出結(jié)構(gòu)效果圖:

這是最簡單的查詢語句。數(shù)據(jù)庫都是支持查詢、刪除、增加、更新操作的。
4.2 刪除數(shù)據(jù)操作
刪除操作,將數(shù)據(jù)從數(shù)據(jù)庫中移除,關鍵詞 delete,先刪除一條數(shù)據(jù),如下代碼:
# 刪除特定數(shù)據(jù)
delete_sql = "delete from info where id = 1"
firstdb.execute(delete_sql)
firstdb.commit()
# 查詢并輸出
query_sql = "select * from info"
for result in firstdb.execute(query_sql):
print(result)
運行結(jié)果如下圖:

4.3 插入更多數(shù)據(jù)
增加的操作,關鍵詞 add,使用 for 循環(huán),先批量的增加一些數(shù)據(jù):
# 插入數(shù)據(jù)
insert_sql = "insert into info(title, content, author) values ('第{}個標題', '隨機的第{}個內(nèi)容', '匿名')"
for i in range(10, 20):
sql = insert_sql.format(i, i * 2)
firstdb.execute(sql)
firstdb.commit()
# 查詢并輸出
query_sql = "select * from info"
for result in firstdb.execute(query_sql):
print(result)
for 循環(huán),從 10 循環(huán)到 20,不含 20,然后全部執(zhí)行 sql 語句和提交到數(shù)據(jù)庫。最后查詢?nèi)繑?shù)據(jù),看下有沒有增多,如下結(jié)果圖:

4.4 更新數(shù)據(jù)操作
數(shù)據(jù)有增加,最后更新數(shù)據(jù),關鍵詞 update,做個條件更新,id 大于等于 4 的數(shù)據(jù),設置 author 為“不匿名”,如下代碼:
# 更新數(shù)據(jù)
update_sql = "update info set author = '不匿名' where id >= 4"
firstdb.execute(update_sql)
# 查詢并輸出
query_sql = "select * from info"
for result in firstdb.execute(query_sql):
print(result)
最后的結(jié)果圖如下:

以上就是 Python 操作 sqlite 的全部代碼了。
【多選題】小練習
數(shù)據(jù)庫支持哪些操作?
[x] 查詢數(shù)據(jù) [x] 新增數(shù)據(jù) [x] 更新數(shù)據(jù) [x] 刪除數(shù)據(jù)
怎么批量更新數(shù)據(jù)呢?代碼該如何編寫呢?歡迎加我微信:Jiabcdefh,備注:進入自動化交流群。
該數(shù)據(jù)庫是單數(shù)據(jù)庫操作,不要打開多個,這樣有可能會鎖死。
“AI悅創(chuàng)·推出輔導班啦,包括「Python 語言輔導班、C++輔導班、算法/數(shù)據(jù)結(jié)構(gòu)輔導班、少兒編程、pygame 游戲開發(fā)」,全部都是一對一教學:一對一輔導 + 一對一答疑 + 布置作業(yè) + 項目實踐等。QQ、微信在線,隨時響應!V:Jiabcdefh
”
黃家寶丨AI悅創(chuàng)
隱形字
攝影公眾號「悅創(chuàng)攝影研習社」
在這里分享自己的一些經(jīng)驗、想法和見解。
長按識別二維碼關注


