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教程歡迎持續關注編程學習網。
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.stbrigidsathleticclub.com/post/11409/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料