天天看點

python操作sqlite3

寫在前面

  SQLite3資料庫是一款非常小巧輕量級的嵌入式開源資料庫軟體,也就是說沒有獨立的維護程序,所有的維護都來自于程式本身。由于其友善快捷,從python2.5開始SQLite3就成了Python語言的标準子產品了;這也是Python中唯一一個資料庫接口類子產品,适合使用者開發小型資料庫系統。,此外建議小夥伴們在閱讀之前先學*一些SQL資料庫語言的基本文法,否則看這SQL語句會有一點蒙。接下來就體驗一下它的神秘力量吧!

一:使用資料庫的宏觀過程

  我猜很多小夥伴們開始學*資料庫時應該和我一樣把重點放在學*使用資料庫的每一條SQL語句上,可是當我學*完*所有的語句後發現:我還是對建立使用資料庫的過程一知半解,這樣缺少從整體上對資料庫的認識和了解。是以我認為正确的方法應該是:先從整體上對資料庫的使用過程有一個清晰宏觀的掌握,之後再深入學*,這樣食用味道會更佳哦!

  話不多說,上菜:

python操作sqlite3

二:資料庫使用

1、導入資料庫子產品

  此處沒有什麼可說的,由于python2.5以後的安裝包已經自帶SQLite3的軟體包了,是以一行語句直接導入即可。

import sqlite3      

2、打開資料庫

  在python中,使用sqlite3建立資料庫的連接配接,當我們指定的資料庫檔案不存在的時候連接配接對象會自動建立資料庫檔案;如果資料庫檔案已經存在,則連接配接對象不會再建立資料庫檔案,而是直接打開該資料庫檔案。連接配接對象可以是硬碟上面的資料庫檔案,也可以是建立在記憶體(memory)中的,在記憶體中的資料庫執行完任何操作後,都不需要送出事務的(commit)

  connect方法傳回con對象,即是資料庫連結對象,它提供了以下方法:

方法 描述
.cursor() 建立一個遊标對象
.commit() 處理事務送出
.rollback() 處理事務復原
.close() 關閉一個資料庫連接配接

2.1、在硬碟上建立資料庫

方法一:

con=sqlite3.connect("E:\Test.db")
      

  注意: ​

​E:\Test.db​

​ 與 ​

​E:\\Test.db​

​E:\TEST.db​

​ 均相同。由此可見資料庫的名稱不區分大小寫,且以第一次建立時的名字為準。 但需要注意的是: ​

​E:\test.db​

​ 會報錯,因為編譯器會識别到 ​

​\t​

​ 為制表符,是以認為路徑不對。

方法二:

con=sqlite3.connect("Test.db")      

  不加全路徑時,資料庫檔案會自動建立在工程項目檔案夾下。

2.2、在記憶體上建立資料庫

con=sqlite3.connect("memory")      

3、建立遊标

  遊标對象有以下方法支援資料庫操作:

.execute() 用來執行sql語句
.executemany() 用來執行多條sql語句
用來關閉遊标
.fetchone() 用來從結果中取一條記錄,并将遊标指向下一條記錄
.fetchmany() 用來從結果中取多條記錄。
.fetchall() 用來從結果中取出是以記錄。
.scroll() 用于遊标滾動。

  建立遊标示例:

cur=con.cursor()      

4、執行SQL語句

4.1、建立表

  示例中所有的大寫字元為SQL文法标準,小寫字元為使用者自定義的字元,但由于SQL語句不區分大小寫,是以将SQL标準語句小寫也可以。

cur.execute("CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)")
      
cur.execute("CREATE TABLE test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)")
      

  注意:如果使用方法二(不加 ​

​IF NOT EXISTS​

​),當項目中存在相同的表時會報錯,是以為了省略檢查表是否已建立的過程,建議使用方法一。

4.2、新增資料

方法一

  1. data = "5,'leon',22"
  2. cur.execute('INSERT INTO test VALUES (%s)'%data)

方法二

cur.execute("INSERT INTO test values(?,?,?)",(6,"zgq",20))
      

方法三

cur.executemany('INSERT INTO test VALUES (?,?,?)',[(3,'name3',19),(4,'name4',26)])
      

4.2、更新資料

cur.execute("UPDATE test SET name=? WHERE id=?",("nihao",1))
      
cur.execute("UPDATE test SET name='haha' WHERE id=1")
      

4.3、删除資料

n=cur.execute("DELETE FROM test WHERE id=?",(1,))
      
n=cur.execute("DELETE FROM test WHERE id=2")
      

  傳回的n為遊标對象

4.4、查詢資料

cur.execute("SELECT * FROM test")
      

  查詢的結果存儲在遊标對象cur中,可以使用對象的方法進行通路。

4.5、删除表

cur.execute("DROP TABLE Test ")
      

5、查詢并顯示資料

5.1、全部顯示

  1. cur.execute("select * from Test")
  2. for item in cur:
  3. print(item)

print(cur.fetchall())
      

5.2、顯示一條

print(cur.fetchone())
      

5.2、顯示多條

print(cur.fetchmany(3))
      

  注意:使用遊标的方法傳回的資料類型是清單。

6、事務送出或復原

6.1、送出(送出後才會寫入資料庫和釋放權限)

con.commit()
      

6.2、復原

con.rollback()
      

7、關閉資料庫連接配接和遊标

  1. cur.close()
  2. con.close()

  注意:定要先關閉遊标,再關閉資料庫連接配接,否則會報錯!