編程學習網 > 編程語言 > Python > Python使用SQLite數據庫教程
2023
09-23

Python使用SQLite數據庫教程

SQLite是一種嵌入式數據庫,它的數據庫就是一個文件。SQLite將整個數據庫,包括定義、表、索引以及數據本身,作為一個單獨的、可跨平臺使用的文件存儲在主機中。由于SQLite本身是C寫的,而且體積很小,所以,經常被集成到各種應用程序中。Python就內置了SQLite3,所以在Python中使用SQLite,不需要安裝任何模塊,直接使用。

1  創建數據庫文件

由于Python中已經內置了SQLite3,所以可以直接使用import語句導入SQLite3模塊。

創建一個mrsoft.db的數據庫文件,然后執行SQL語句創建一個user(用戶表),user表包含id和name兩個字段。具體代碼如下:

import sqlite3

# 連接到SQLite數據庫

# 數據庫文件是mrsoft.db,如果文件不存在,會自動在當前目錄創建

conn = sqlite3.connect('mrsoft.db')

# 創建一個Cursor

cursor = conn.cursor()

# 執行一條SQL語句,創建user表                   

cursor.execute('create  table  user (id int(10)  primary key, name varchar(20))')

# 關閉游標

cursor.close()

# 關閉Connection

conn.close()



2  操作SQLite

(1)新增用戶數據信息

例如,向user表中插入3條用戶信息。此外,由于是新增數據,需要使用commit()方法提交事務。因為對于增加、修改和刪除操作,使用commit()方法提交事務后,如果相應操作失敗,可以使用rollback()方法回滾到操作之前的狀態。新增用戶數據信息具體代碼如下:

import sqlite3

# 連接到SQLite數據庫

# 數據庫文件是mrsoft.db

# 如果文件不存在,會自動在當前目錄創建

conn = sqlite3.connect('mrsoft.db')

# 創建一個Cursor

cursor = conn.cursor()

# 執行一條SQL語句,插入一條記錄

cursor.execute('insert into user (id, name) values ("1", "MRSOFT")')

cursor.execute('insert into user (id, name) values ("2", "Andy")')

cursor.execute('insert into user (id, name) values ("3", "明日科技小助手")')

# 關閉游標

cursor.close()

# 提交事務

conn.commit()

# 關閉Connection

conn.close()



(2)查看用戶數據信息

查看用戶信息的代碼與插入數據信息大致相同,不同點在于使用的SQL語句不同。此外,查詢數據時通常使用如下3種方式:

l  fetchone():獲取查詢結果集中的下一條記錄。

l  fetchmany(size):獲取指定數量的記錄。

l  fetchall():獲取結果集的所有記錄。

例如,分別使用fetchone、fetchmany和fetchall這3種方式查詢用戶信息,具體代碼如下:

import sqlite3

# 連接到SQLite數據庫,數據庫文件是mrsoft.db

conn = sqlite3.connect('mrsoft.db')

# 創建一個Cursor

cursor = conn.cursor()

# 執行查詢語句

cursor.execute('select * from user')

# 獲取查詢結果

result1 = cursor.fetchone()

print(result1)

# 關閉游標

cursor.close()

# 關閉Connection

conn.close()

使用fetchone()方法返回的result1為一個元組,執行結果如下:

(1,'MRSOFT')

修改實例代碼,將獲取查詢結果的語句塊代碼修改為:

result2 = cursor.fetchmany(2)     # 使用fetchmany方法查詢多條數據

使用fetchmany()方法傳遞一個參數,其值為2,默認為1。返回的result2為一個列表,列表中包含2個元組,運行結果如下:

[(1,'MRSOFT'),(2,'Andy')]

修改實例代碼,將獲取查詢結果的語句塊代碼修改為:

result3 = cursor.fetchall()         # 使用fetchmany方法查詢多條數據

使用fetchall()方法返回的result3為一個列表,列表中包含所有user表中數據組成的元組,運行結果如下:

 [(1,'MRSOFT'),(2,'Andy'),(3,'明日科技小助手')]

修改實例代碼,將獲取查詢結果的語句塊代碼修改為:

cursor.execute('select * from user where id > ?',(1,))

result3 = cursor.fetchall()

在select查詢語句中,使用問號作為占位符代替具體的數值,然后使用一個元組來替換問號(注意,不要忽略元組中最后的逗號)。上述查詢語句等價于:

cursor.execute('select * from user where id > 1')

執行結果如下:

[(2,'Andy'),(3,'明日科技小助手')]

說明:使用占位符的方式可以避免SQL注入的風險,推薦使用這種方式。



(3)修改用戶數據信息

例如,將SQLite數據庫中user表ID為1的數據name字段值“mrsoft”修改為“MR”,并使用fetchAll獲取表中的所有數據。具體代碼如下:

import sqlite3

# 連接到SQLite數據庫,數據庫文件是mrsoft.db

conn = sqlite3.connect('mrsoft.db')

# 創建一個Cursor:

cursor = conn.cursor()

cursor.execute('update user set name = ? where id = ?',('MR',1))

cursor.execute('select * from user')

result = cursor.fetchall()

print(result)

# 關閉游標

cursor.close()

# 提交事務

conn.commit()

# 關閉Connection:

conn.close()

執行結果如下:

[(1, 'MR'), (2, 'Andy'), (3, '明日科技小助手')]



(4)刪除用戶數據信息

例如,將SQLite數據庫中user表ID為1的數據刪除,并使用fetchAll獲取表中的所有數據,查看刪除后的結果。具體代碼如下:

import sqlite3

# 連接到SQLite數據庫,數據庫文件是mrsoft.db

conn = sqlite3.connect('mrsoft.db')

# 創建一個Cursor:

cursor = conn.cursor()

cursor.execute('delete from user where id = ?',(1,))

cursor.execute('select * from user')

result = cursor.fetchall()

print(result)

# 關閉游標

cursor.close()

# 提交事務

conn.commit()

# 關閉Connection:

conn.close()

執行上述代碼后,user表中ID為1的數據將被刪除。運行結果如下:

 [(2, 'Andy'), (3, '明日科技小助手')]

以上就是Python使用SQLite數據庫教程的詳細內容,想要了解更多Python教程歡迎持續關注編程學習網。

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取