程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python自動化操作sqlite數據庫

編輯:Python

你好,我是悅創。

1. 什麼是數據庫

數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”,是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。

數據庫是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合,可視為電子化的文件櫃。

2. 有哪些數據庫

2.1 數據庫類型

大型數據庫:甲骨文Oracle。

分布式數據庫:HBase。

中型數據庫:SqlServer、Mysql、MariaDB、PostgreSQL、Redis等。

小型數據庫:Sqlite、 Access 。

2.2 如何選擇

大集團:Oracle、HBase。

發展中公司:PostgreSQL、Mysql。

app 的臨時數據庫:Sqlite。

2.3 Sqlite

  • 方便攜帶、易於操作、隨時創建、Python 原生支持的小型數據庫文件。
  • 輕型的數據庫,遵守 ACID 的關系型數據庫管理系統,它包含在一個相對小的 C 庫中。
  • D.RichardHipp 建立的公有領域項目。
  • 設計目標是嵌入式的,而且已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百 K 的內存就夠了。
  • 支持 Windows/Linux/Unix 等等主流的操作系統。
  • 能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java 等,還有 ODBC 接口。
  • 比起 Mysql、PostgreSQL 這兩款開源的世界著名數據庫管理系統來講,它的處理速度比他們都快。
  • 第一個 Alpha 版本誕生於 2000年5月。 至 2015年已經有 15 個年頭,SQLite 也迎來了一個版本 SQLite 3 已經發布。
  • Python 自帶 sqlite3 這個庫,方便且直接的創建和讀取 sqlite3 數據庫。

3. sqlite 創建表格

3.1 sqlitestudio 介紹

本節內容的目的,是教大家如何在非代碼的情況下,創建 sqlite3 數據庫文件和表格編輯操作。

既然不寫代碼,就肯定需要借助軟件來操作。本節課對應的源碼中,准備好了 windows、macos、linux 三個系統的 sqlitestudio 軟件,如下圖:

windows 使用 zip;macos 使用 dmg;linux 使用 tar.xz;

sqlitestudio 是一款綠色軟件,安裝你的操作系統所對應的 sqlitestudio 軟件,然後執行,就可以得到啟動界面。

3.2 新建 sqlite 數據庫文件

點擊左上角的數據庫,選擇添加數據庫,則會彈框,讓你選擇某個數據庫文件,或者創建一個新的 sqlite 文件

點擊黃色的文件夾,是指打開某個存在的 sqlite 文件。

點擊 綠色的+ ,是新建一個 sqlite 文件,並且你也需要指定存儲的具體位置。

選擇在三個 sqlitestudio 安裝包旁邊,新建一個名為 first.db 的文件,如下截圖:

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

3.3 新增數據

回到 sqlitestudio 軟件界面,打開剛新建的 first.db ,裡面什麼都沒有,表格是空的,現在來新建一個表格。

鼠標右鍵點擊 Tables,然後選擇新建表格,在新出的界面中,寫表格名、字段名和字段類型,如下圖:

方法一:

方法二:


Table Name 表格名,輸入具體名稱。最上方框中的那個按鈕,是增列字段的按鈕,點擊按鈕彈出中間的字段信息,輸入字段名、類型、大小等。

這裡寫了id title content author 四個字段信息,然後點擊綠色的勾,保存表格即可。

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

點擊綠色的+號,然後增加幾條數據,方便我們下節課的代碼練習。圖中有三條。

sqlitestudio 也要保留,方便我們下節課,查看代碼練習的數據變化結果。

4. Python 鏈接和操作 sqlite

4.1 鏈接和查詢代碼

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)))

輸出結構效果圖:

這是最簡單的查詢語句。數據庫都是支持查詢、刪除、增加、更新操作的。

4.2 刪除數據操作

刪除操作,將數據從數據庫中移除,關鍵詞 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)

運行結果如下圖:

4.3 插入更多數據

增加的操作,關鍵詞 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 語句和提交到數據庫。最後查詢全部數據,看下有沒有增多,如下結果圖:

4.4 更新數據操作

數據有增加,最後更新數據,關鍵詞 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

:::


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved