今天是持續寫作的第 14 / 100 天,
如果你有想要交流的想法、技術,歡迎在評論區留言,
本篇文章將給大家介紹 Python 如何操作 SQLite 資料庫,本文將是滾雪球學 Python 第一階段的倒數第二篇文章,

已完成的文章
- 1.這才是 Python 學習的正確起手姿勢,滾雪球學 Python
- 2. 無門檻學會資料型別與輸入、輸出函式,滾雪球學 Python
- 3. 無轉折不編程,滾雪球學 Python
- 4. 串列一學完,Python 會一半,滾雪球學 Python
- 5. Python 回圈的本質就是一段代碼懶得重復寫
- 6. Python 元組,不可變的串列,滾雪球學 Python
- 7. ? 會查新華字典不?會,Python 字典已經掌握了
- 8. 秘 Python 集合三板斧,滾雪球學 Python
- 9. Python 學習程序的第一個山坡,99%的人都倒在了山坡下
- 10. 比找女朋友還難的技術點,Python 面向物件
- 11. 用別人寫好的代碼,完成我的作業,剩下的時間去摸魚
- 12. 資料放在本地,心里才更踏實,滾雪球學 Python
- 13. 如果自己寫的 Python 程式出錯了,怎么辦?
滾雪球學 Python 目錄
- 已完成的文章
- 十四、Python 操作 SQLite 資料庫
- 14.1 認識 SQLite 資料庫
- 14.1.1 SQLite 基本使用
- 14.1.2 建立 SQLite 資料庫表
- 14.1.3 表中增加資料
- 14.1.4 查詢資料庫中的表資料
- 14.1.5 更新表資料
- 14.1.6 洗掉表資料
- 14.2 這篇博客的總結
本系列文章將在 2021 年春節前完成,歡迎關注,點贊,評論 --- 夢想橡皮擦
想學 Python 爬蟲,可以訂閱橡皮擦專欄哦~ 🈲🈲🈲 點擊發現驚喜 🈲🈲🈲
十四、Python 操作 SQLite 資料庫
14.1 認識 SQLite 資料庫
SQLite 資料庫在安裝 Python 之后會自動安裝到你的電腦上,通過它可以將資料持久的存盤在本地電腦中,有人肯定說了,我們可以將資料存盤到檔案中啊,為啥要存盤到資料庫中呢?這個吧,肯定是用著舒服啊(說了跟沒說一樣),說真的很多時候不用問為什么的,先上手,后面在補充這些概念類的東西,用資料庫在某些場景下是比用檔案好的,當然只是在某些場景,
在 Python 中通過 import sqlite3 匯入模塊,
14.1.1 SQLite 基本使用
資料庫一般分為以下三步,
- 連接資料庫
- 操作資料庫
- 關閉資料庫
使用如下命令可以連接資料庫,
conn = sqlite3.connect("資料庫名稱")
該方式如果資料庫存在,自動建立連接,如果不存在,先創建資料庫再建立連接關系,使用完畢記得及時關閉資料庫,
conn.close()
上述代碼中的 conn 就是一個普通的變數,一般叫做資料庫連接物件,記住也是一個物件,它肯定有屬性,也有方法,
請運行下述代碼,在本地目錄查看是否多出了一個檔案,
import sqlite3
conn = sqlite3.connect("my_data.db")
conn.close()
14.1.2 建立 SQLite 資料庫表
通過 connect 方法可以與資料庫檔案建立連接,回傳的物件是 connect 物件,這個物件常用的方法如下,
- close 關閉資料庫連接;
- commit 更新資料庫內容;
- cursor 建立 cursor 物件,該物件可以執行 execute 方法;
- execute 執行 SQL 資料庫命令,例如資料表建立,查詢,洗掉,更新,
SQLite 資料型別
在正式學習 SQLite 資料庫操作之前,需要先學習一下該資料庫中包含的幾種資料型別,因為 SQLite 比較簡單,所以涉及的資料型別內容也不多,
- NULL 空值;
- INTEGER 整數;
- REAL 浮點數;
- TEXT 字串;
- BLOB 富文本資料,例如圖片、歌曲,
有了上述內容之后就可以開始操作資料庫了,在這之前還要補充一個概念,一個資料庫可以包含多張表,翻譯成通俗的話就是,一個 my_data.db 檔案中可以包含多個表,
在 my_data.db 檔案中建立第一張表,
import sqlite3
# 連接到 my_data.db 資料庫
conn = sqlite3.connect("my_data.db")
# 建立 cursor 物件
cursor = conn.cursor()
# 建表 SQL 陳述句
sql = """
create table students(
id int,
name text,
sex text,
age int
)
"""
# 執行 sql 陳述句
cursor.execute(sql)
# 關閉 cursor 物件
cursor.close()
# 關閉資料庫連接
conn.close()
相關注釋已經添加到代碼中,注意 conn 物件與 cursor 物件,使用之后都需要關閉,并且 cursor 物件在 conn 物件之前關閉,
create table students(
id int,
name text,
sex text,
age int
)
該內容是一個建表 SQL 陳述句,其中 create table 表名稱(欄位串列),每個欄位定義都是按照 欄位名 欄位型別 格式設計的,通過該 SQL 陳述句就可以在資料庫中建立一個 students 表,表中包含 4 列內容,分別是 id、name、sex、age,這里你可以將表看成一個類似表格的東西,
| id | name | sex | age |
|---|
已經創建 students 表之后,就不可以在創建相同表名的表了,也就是在執行上述代碼會報錯,這時你就可以用到 try … except 陳述句了,
import sqlite3
# 連接到 my_data.db 資料庫
conn = sqlite3.connect("my_data.db")
# 建立 cursor 物件
cursor = conn.cursor()
# 建表 SQL 陳述句
sql = """
create table students(
id int,
name text,
sex text,
age int
)
"""
try:
# 執行 sql 陳述句
cursor.execute(sql)
except:
print("資料庫已經存在該表")
# 關閉 cursor 物件
cursor.close()
# 關閉資料庫連接
conn.close()
14.1.3 表中增加資料
在資料庫中建立表之后就可以增加資料了,表中的資料一般稱為記錄,接下來使用插入資料的命令向表中增加一條學生資料,
import sqlite3
# 連接到 my_data.db 資料庫
conn = sqlite3.connect("my_data.db")
# 建立 cursor 物件
cursor = conn.cursor()
# 表中插入資料的SQL
insert_sql = """
insert into students values(?,?,?,?)
"""
try:
# 待插入的資料
data = (1,"橡皮擦","女",18)
# 執行 sql 陳述句
cursor.execute(insert_sql,data)
# 更新資料庫內容,在插入資料、洗掉資料、更新資料的時候不要忘記該命令
conn.commit()
except Exception as e:
print("插入例外",e)
# 關閉 cursor 物件
cursor.close()
# 關閉資料庫連接
conn.close()
上述代碼最核心的為 insert into students values(?,?,?,?) ,該內容也是 SQL 陳述句,執行該陳述句使用 execute 方法時,需要在該方法的第二個引數位置傳入對應的資料,也就是說如果 SQL 陳述句中有三個問號,這里的第二個引數也應該是三個元素的元組,
14.1.4 查詢資料庫中的表資料
查詢陳述句的 SQL 格式為:
select * from 表名
查詢 students 表中的資料代碼如下:
import sqlite3
# 連接到 my_data.db 資料庫
conn = sqlite3.connect("my_data.db")
# 建立 cursor 物件
cursor = conn.cursor()
# 查詢陳述句 SQL
select_sql = """
select * from students
"""
try:
# 執行 sql 陳述句
results = cursor.execute(select_sql)
print(results)
for record in results:
print(record)
except Exception as e:
print("查詢例外", e)
# 關閉 cursor 物件
cursor.close()
# 關閉資料庫連接
conn.close()
使用上述代碼即可將資料庫中指定表的資料全部讀取出來,還有當我們執行 results = cursor.execute(select_sql) 之后,輸出的 results 物件型別為 <sqlite3.Cursor object at 0x00000000020DCB90>,該物件存在一個 fetchall 方法,使用該方法可以一次性將所有資料都存放到一個元組內,
還有一個需要說明,如果只想要某個資料表中的某一列,不想要全部資料,使用的 SQL 陳述句語法格式為:
select 列名,列名 from 表名
14.1.5 更新表資料
更新資料表中的資料用到的關鍵詞是 update,語法格式如下:
update 表 set 列名 = 新值,列名=新值...
where 條件
這里的 SQL 語法格式變的相對復雜了一些,主要增加了 where 條件判斷,先完成以下代碼內容,
import sqlite3
# 連接到 my_data.db 資料庫
conn = sqlite3.connect("my_data.db")
# 建立 cursor 物件
cursor = conn.cursor()
# 修改陳述句 SQL
update_sql = """
update students set name = "大橡皮擦" ,age=20
where id = 1
"""
try:
# 執行 sql 陳述句
cursor.execute(update_sql)
conn.commit()
except Exception as e:
print("更新例外", e)
# 關閉 cursor 物件
cursor.close()
# 關閉資料庫連接
conn.close()
執行更新操作,將 橡皮擦 更新為了 大橡皮擦,可以使用查詢陳述句查看一下表中的資料是否得到修改,
Python 操作資料庫重點其實是 SQL 陳述句的熟練程度,本篇博客中涉及的 SQL 陳述句只是冰山一角,對于 SQL 陳述句其實是存在專業的語法結構的,在后續再次滾雪球的時候,將為你展開說明,
在更新表中列資料的時候,第一個要注意一定要增加 where 條件,否則話整個表就都被更新了;第二個一定要確定好列名,否則找不到列名也會報錯的哦,
14.1.6 洗掉表資料
學習了插入與更新之后,洗掉表資料就變得簡單多了,記住 SQL 的語法格式就可以:
delete from 表名
where 條件
當 where 條件滿足的時候,就會洗掉對應的資料,一定要注意如果沒有寫 where 條件,整個表就被洗掉了,
如果你不想**刪庫跑路**,那記住一點,當對資料庫中任意表執行更新或者洗掉操作的時候,一定都要寫上 where 條件
14.2 這篇博客的總結
本篇博客如果是第一次學習 Python 的朋友打開,其實難度很大,因為里面涉及了另一個語言體系叫做 SQL 語言,一種對資料庫進行操作的語法,學習該語法之后其實對很多資料庫都可以進行簡單的操作了,尷尬的是如果你第一次學習,你需要一邊看 Python 語法,一邊看 SQL 語法,很容易兩個都學起來迷糊,不過不要擔心,畢竟這只是第一遍滾雪球,相信第二次再來你會更加有自信的,
想學 Python 爬蟲,可以訂閱橡皮擦專欄哦~ 🈲🈲🈲🈲 點擊發現驚喜 🈲🈲🈲🈲
🈚🈚🈚🈚🈚
如果你想跟博主建立親密關系,可以關注博主,或者關注博主公眾號“非本科程式員”,了解一個非本科程式員是如何成長的,
博主 ID:夢想橡皮擦,希望大家點贊、評論、收藏,
CSDN認證博客專家
大學老師
高級產品經理
互聯網從業者
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232579.html
標籤:python
上一篇:python3.9:pyinstaller打包python檔案成exe
下一篇:怎么用Python獲得當前用戶名
