成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

開發(fā) 后端
如果你是軟件開發(fā)人員,相信你一定知道或者曾經使用過一個非常輕量級的數(shù)據(jù)庫——SQLite。它具有作為關系數(shù)據(jù)庫所需的幾乎所有功能,但是這個數(shù)據(jù)庫把所有功能都保存在一個文件中。

 [[335808]]

如果你是軟件開發(fā)人員,相信你一定知道或者曾經使用過一個非常輕量級的數(shù)據(jù)庫——SQLite。它具有作為關系數(shù)據(jù)庫所需的幾乎所有功能,但是這個數(shù)據(jù)庫把所有功能都保存在一個文件中。在其官方網(wǎng)站上,SQLite的主要應用場景包括:

  • 嵌入式設備和物聯(lián)網(wǎng)
  • 數(shù)據(jù)分析
  • 數(shù)據(jù)傳輸
  • 文件存檔或數(shù)據(jù)容器
  • 內部或臨時數(shù)據(jù)庫
  • 在演示或測試期間替代企業(yè)數(shù)據(jù)庫
  • 教育、培訓和測試
  • 實驗性SQL語言擴展

當然,SQLite還有很多其他功能,在此不一一列舉,感興趣的同學可以去看官方文檔:https://www.sqlite.org/whentouse.html

最重要的是,SQLite實際上是作為Python庫內置的。換言之,你不需要安裝任何服務器端/客戶端軟件,也不需要運行某個服務,只要你在Python中導入庫并開始編程,那么你就有了一個關系數(shù)據(jù)庫管理系統(tǒng)!

導入和使用

 

這里我們說“內置”的意思就是,你甚至不需要運行 pip install ,就能獲取庫。只需要通過以下方式導入:

 

  1. import sqlite3 as sl 

1.創(chuàng)建與數(shù)據(jù)庫的連接

我們根本不需要為驅動程序、連接字符串等煩惱??梢灾苯觿?chuàng)建一個 SQLite 數(shù)據(jù)庫,并擁有一個簡單的連接對象:

 

  1. con = sl.connect('my-test.db'

運行此行代碼后,我們就已經創(chuàng)建并連接到該數(shù)據(jù)庫上。 如果要求Python連接的數(shù)據(jù)庫不存在,它就會自動幫我們創(chuàng)建一個空數(shù)據(jù)庫。 如果我們已經創(chuàng)建了數(shù)據(jù)庫,就能用上面完全相同的代碼連接到現(xiàn)有數(shù)據(jù)庫。

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

2.創(chuàng)建表格

接下來,我們先創(chuàng)建一個表格。

 

  1. with con: 
  2.     con.execute(""
  3.         CREATE TABLE USER ( 
  4.             id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
  5.             name TEXT, 
  6.             age INTEGER 
  7.         ); 
  8.     """) 

在這個 USER 表中,我們添加了三列。正如我們所看到的,SQLite 確實是輕量級的,但是它支持常規(guī) RDBMS 應該具有的所有基本特性,例如數(shù)據(jù)類型、可為null、主鍵和自動遞增。

運行這段代碼之后,我們就已經創(chuàng)建好了一個表,盡管它什么都沒有輸出。

3.插入記錄

讓我們在剛剛創(chuàng)建的 USER 表中插入數(shù)據(jù)記錄,這也可以證明我們確實創(chuàng)建了它。

如果我們需要一次性插入多個記錄,Python中的SQLite也能很容易地實現(xiàn)這一點。

 

  1. sql = 'INSERT INTO USER (id, name, age) values(?, ?, ?)' 
  2. data = [ 
  3.     (1, 'Alice', 21), 
  4.     (2, 'Bob', 22), 
  5.     (3, 'Chris', 23) 

我們需要用問號作為占位符來定義SQL語句 。接下來就是創(chuàng)建一些要插入的示例數(shù)據(jù)。使用連接對象,就能插入這些示例行。

 

  1. with con: 
  2.     con.executemany(sql, data) 

在運行代碼之后,沒有報錯,那就是成功的。

4.查詢表格

接下來,我們通過實際的方式來驗證我們所做的一切,通過查詢表格來獲取示例行。

 

  1. with con: 
  2.     data = con.execute("SELECT * FROM USER WHERE age <= 22"
  3.     for row in data: 
  4.         print(row) 

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

 

你可以看到,很簡單就得到了結果。

此外,盡管 SQLite 是輕量級的,但是作為一個廣泛使用的數(shù)據(jù)庫,大多數(shù)SQL客戶端軟件都支持使用它。

我自己用得最多的是 DBeaver,接下來給大家介紹一下。

5.從SQL客戶端(DBeaver)連接到SQLite數(shù)據(jù)庫

因為我用的是 googlecolab,所以我要將 my-test.db 文件下載到我的本地計算機上。當然,你也可以直接在你的電腦上使用 Python 數(shù)據(jù)庫連接你的本地數(shù)據(jù)庫。

在 DBeaver 中,創(chuàng)建一個新連接并選擇 SQLite 作為數(shù)據(jù)庫類型。

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

然后,瀏覽DB文件。

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

現(xiàn)在你可以在數(shù)據(jù)庫上運行任何SQL查詢,看看它與其他常規(guī)關系數(shù)據(jù)庫有什么不同。

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

與Pandas無縫連接

 

你以為就只有這些?不,事實上,作為Python的一個內置特性,SQLite 可以與 Pandas 數(shù)據(jù)幀無縫連接。

讓我們先來定義一個數(shù)據(jù)幀。

 

  1. df_skill = pd.DataFrame({ 
  2.     'user_id': [1,1,2,2,3,3,3], 
  3.     'skill': ['Network Security''Algorithm Development''Network Security''Java''Python''Data Science''Machine Learning'
  4. }) 

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

 

然后,我們可以簡單地調用數(shù)據(jù)幀的to_sql()方法將其保存到數(shù)據(jù)庫中。

 

  1. df_skill.to_sql('SKILL', con) 

就這樣我們甚至不需要預先創(chuàng)建表,列的數(shù)據(jù)類型和長度都會被推斷出來。當然,如果你想的話,你也可以先定義。

然后,假設我們要將表 USER 和 SKILL 連接在一起,并將結果讀入Pandas數(shù)據(jù)框。

 

  1. df = pd.read_sql(''
  2.     SELECT s.user_id, u.name, u.age, s.skill  
  3.     FROM USER u LEFT JOIN SKILL s ON u.id = s.user_id 
  4. ''', con) 

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

 

是不是很厲害?讓我們把結果寫到一個名為USER_SKILL的新表中。

 

  1. df.to_sql('USER_SKILL', con) 

我們也可以用SQL客戶端來檢索表。

 

你知道Python有內置數(shù)據(jù)庫嗎?Python內置庫SQlite3使用指南

 

總結

實際上,Python中還隱藏著很多驚喜。而且這些驚喜并不沒有隱藏起來,只是Python有太多現(xiàn)成可以直接使用的特性了,這就導致很多人無法發(fā)現(xiàn)這些特性。

在本文中,我介紹了如何使用 Python 內置庫 sqlite3 在 SQLite 數(shù)據(jù)庫中創(chuàng)建和操作表。它也支持對表格進行更新和刪除操作,建議大家在看完這篇文章之后自己嘗試一下。

最重要的是,我們可以輕松地將表從 SQLite 數(shù)據(jù)庫讀入 Pandas 數(shù)據(jù)幀,反之亦然。這使我們能夠更容易地與我們的輕量級關系數(shù)據(jù)庫進行交互。

你可能會注意到 SQLite 沒有進行身份驗證,這也是它刻意設計的行為,因為需要輕量化。

一起去探索Python中更多令人驚訝的特性吧!

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2023-11-24 11:11:08

Python數(shù)據(jù)庫

2020-08-29 19:15:09

python數(shù)據(jù)庫SQLite

2013-04-10 14:21:35

2013-04-09 16:47:19

iOS嵌入式數(shù)據(jù)庫SQLit

2021-09-12 17:25:12

SQLite數(shù)據(jù)庫

2011-07-07 16:42:38

iPhone Sqlite3 數(shù)據(jù)庫

2021-06-05 21:29:53

數(shù)據(jù)庫MySQL函數(shù)

2023-11-01 15:45:29

DBMPython

2012-03-06 09:50:24

Android SQLAndroidSQLite3

2017-01-18 18:28:54

大數(shù)據(jù)數(shù)據(jù)庫技術

2020-10-20 14:10:51

Python代碼字符串

2017-10-26 12:37:24

Pythonsqlite3數(shù)據(jù)庫

2019-08-15 07:00:54

SQLite數(shù)據(jù)庫內存數(shù)據(jù)庫

2024-10-28 16:31:03

2025-05-07 04:45:00

AIOPS數(shù)據(jù)庫Oracle

2025-06-23 08:40:00

MySQL數(shù)據(jù)庫運維

2024-03-13 10:40:00

性能探測工具SQL語句數(shù)據(jù)庫

2024-03-07 13:02:57

PythonSQLite數(shù)據(jù)庫

2010-03-04 15:31:44

Python SQLI

2021-09-15 09:20:37

Python函數(shù)代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色一级毛片 | 欧美在线a | 国产精品免费大片 | 99精品免费久久久久久久久日本 | 精品一区电影 | 天天操夜夜拍 | 人妖一区 | 在线永久看片免费的视频 | 天堂一区在线 | 日韩免费视频 | 亚洲欧美日韩精品久久亚洲区 | 欧美 日韩 国产 成人 | 久久成人av电影 | 日韩福利在线 | 欧洲av在线 | 亚洲精品久久久久久宅男 | 黄色成人免费在线观看 | 国产9久 | 国产成人a亚洲精品 | 亚洲网站在线观看 | 红桃视频一区二区三区免费 | 精品视频国产 | 综合久久综合久久 | 亚州精品天堂中文字幕 | 国产片侵犯亲女视频播放 | 国产精品夜夜春夜夜爽久久电影 | 五月婷婷婷 | 国产精品片aa在线观看 | 日韩在线视频一区 | 日韩欧美在线一区 | 久久精品亚洲精品 | 久久久久国产 | 久久久久久久久久久久久久av | 欧美一区二区在线 | 国产精品久久久久久久久免费高清 | 国产精品久久亚洲7777 | 在线观看成人免费视频 | av国产精品| 亚洲精品视频在线播放 | 国产小视频在线 | 亚洲精品色 |