你好,我是悅創。
數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”,是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。
數據庫是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合,可視為電子化的文件櫃。
大型數據庫:甲骨文Oracle。
分布式數據庫:HBase。
中型數據庫:SqlServer、Mysql、MariaDB、PostgreSQL、Redis等。
小型數據庫:Sqlite、 Access 。
大集團:Oracle、HBase。
發展中公司:PostgreSQL、Mysql。
app 的臨時數據庫:Sqlite。
D.RichardHipp
建立的公有領域項目。本節內容的目的,是教大家如何在非代碼的情況下,創建 sqlite3 數據庫文件和表格編輯操作。
既然不寫代碼,就肯定需要借助軟件來操作。本節課對應的源碼中,准備好了 windows、macos、linux 三個系統的 sqlitestudio 軟件,如下圖:
windows 使用 zip;macos 使用 dmg;linux 使用 tar.xz;
sqlitestudio 是一款綠色軟件,安裝你的操作系統所對應的 sqlitestudio 軟件,然後執行,就可以得到啟動界面。
點擊左上角的數據庫,選擇添加數據庫,則會彈框,讓你選擇某個數據庫文件,或者創建一個新的 sqlite 文件
點擊黃色的文件夾,是指打開某個存在的 sqlite 文件。
點擊 綠色的+
,是新建一個 sqlite 文件,並且你也需要指定存儲的具體位置。
選擇在三個 sqlitestudio 安裝包旁邊,新建一個名為 first.db
的文件,如下截圖:
並且,文件也有對應的生成。
回到 sqlitestudio 軟件界面,打開剛新建的 first.db
,裡面什麼都沒有,表格是空的,現在來新建一個表格。
鼠標右鍵點擊 Tables,然後選擇新建表格,在新出的界面中,寫表格名、字段名和字段類型,如下圖:
方法一:
方法二:
Table Name 表格名,輸入具體名稱。最上方框中的那個按鈕,是增列字段的按鈕,點擊按鈕彈出中間的字段信息,輸入字段名、類型、大小等。
這裡寫了id title content author 四個字段信息,然後點擊綠色的勾,保存表格即可。
保存了文件,重新刷新頁面,就可以查看數據欄,如下:
點擊綠色的+
號,然後增加幾條數據,方便我們下節課的代碼練習。圖中有三條。
sqlitestudio 也要保留,方便我們下節課,查看代碼練習的數據變化結果。
Python 自身攜帶 sqlite 庫,不需要額外安裝,直接使用即可。導入代碼:
import sqlite3
導入代碼之後,將 first.db
文件,放到代碼文件旁邊。這裡用的是 py,所以是把 py 和 first.db
文件放一起,不放一起就只能使用絕對路徑。如下圖:
然後使用 sqlite3 庫,鏈接 first.db
文件,代碼 firstdb = sqlite3.connect('first.db')
正常運行後,寫查詢語句,從數據庫中讀取全部數據,如下代碼:
# 查詢語句
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悅創
# @FileName: main.py
# @Software: PyCharm
# @Blog :http://www.aiyc.top
# @公眾號 :AI悅創
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./執行 SQL 語句。
print(list(firstdb.execute(query_sql)))
輸出結構效果圖:
這是最簡單的查詢語句。數據庫都是支持查詢、刪除、增加、更新操作的。
刪除操作,將數據從數據庫中移除,關鍵詞 delete,先刪除一條數據,如下代碼:
# 刪除特定數據
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)
運行結果如下圖:
增加的操作,關鍵詞 add,使用 for 循環,先批量的增加一些數據:
# 插入數據
insert_sql = "insert into info(title, content, author) values ('第{}個標題', '隨機的第{}個內容', '匿名')"
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 循環,從 10 循環到 20,不含 20,然後全部執行 sql 語句和提交到數據庫。最後查詢全部數據,看下有沒有增多,如下結果圖:
數據有增加,最後更新數據,關鍵詞 update,做個條件更新,id 大於等於 4 的數據,設置 author 為“不匿名”,如下代碼:
# 更新數據
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)
最後的結果圖如下:
以上就是 Python 操作 sqlite 的全部代碼了。
【多選題】小練習
數據庫支持哪些操作?
怎麼批量更新數據呢?代碼該如何編寫呢?歡迎加我微信:Jiabcdefh,備注:進入自動化交流群。
該數據庫是單數據庫操作,不要打開多個,這樣有可能會鎖死。
歡迎關注我公眾號:AI悅創,有更多更好玩的等你發現!
::: details 公眾號:AI悅創【二維碼】
:::
::: info AI悅創·編程一對一
AI悅創·推出輔導班啦,包括「Python 語言輔導班、C++ 輔導班、java 輔導班、算法/數據結構輔導班、少兒編程、pygame 游戲開發」,全部都是一對一教學:一對一輔導 + 一對一答疑 + 布置作業 + 項目實踐等。當然,還有線下線上攝影課程、Photoshop、Premiere 一對一教學、QQ、微信在線,隨時響應!微信:Jiabcdefh
C++ 信息奧賽題解,長期更新!長期招收一對一中小學信息奧賽集訓,莆田、廈門地區有機會線下上門,其他地區線上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
:::