溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中SQLite數據庫怎么使用

發(fā)布時間:2023-05-11 10:50:28 來源:億速云 閱讀:77 作者:iii 欄目:編程語言

這篇文章主要介紹“Python中SQLite數據庫怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python中SQLite數據庫怎么使用”文章能幫助大家解決問題。

SQL(結構化查詢語言)是一種通用數據庫查詢語言。SQL具有數據定義、數據操作和數據控制功能,可以完成數據庫的全部工作。SQL語言使用時只需要用告訴計算機“做什么”,而不需要告訴它“怎么做”。

SQL語言有兩種使用方式,一是直接以命令方式交互使用;二是嵌入到C/C++、Python等主語言中使用。

預備知識

sqlite數據庫的創(chuàng)建與連接

sqlite數據庫的創(chuàng)建與連接分三步走:

(1)導入模塊

import sqlite3
#或者:
from sqlite3 import dbapi2       #導入sqlite3模塊的dbapi2接口模塊

(2)利用connect方法創(chuàng)建數據庫

connection=sqlite3.connect(filename) 
#filename為數據庫文件名,如果該文件存在則打開該數據庫,如果不存在則創(chuàng)建一個新的數據庫文件。 
#該方法返回一個數據庫連接對象

(3)關閉連接對象

connection.close() 
#關閉連接,更新數據庫文件

SQL語句創(chuàng)建數據表

表是數據庫中存放關系數據的集合,一個數據庫里通常包含了多個表,如學生表、班級表、教師表等,表和表之間通過外鍵關聯。

在SQL中,利用create語句創(chuàng)建表語法結構如下:

create table 表名(字段1,…,字段n)

如,創(chuàng)建mytb表:

create table if not exists mytb( xm char, cj real, kc text )

表名是mytb;IF NOT EXISTS表示如果數據庫中不存在mytb數據表,就創(chuàng)建該表;如果該數據表已經存在,則什么也不做;

xm char, cj real, kc text表示該數據表有3個字段,xm(姓名)是字符串類型,cj(成績)是浮點數類型,kc(課程)是文本字符串。

SQLite3支持的數據類型有:

null(值=空)、integer(整數)、real(浮點數)、text(字符串文本)、blob(二進制數據塊)。

execute()方法

在Python中我們可以使用 execute 方法執(zhí)行一條SQL語句

conn.execute('create table if not exists mytb( xm char, cj real, kc text )')

conn為連接對象 execute()方法中參數為一條SQL語句,類型為字符串

插入記錄

(1)插入記錄的SQL語句

語法格式如下 :

insert into 表名 [字段名] values [常量]

如:

insert into Persons values ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

(2)利用execute()執(zhí)行SQL語句

cur.exceute(sql語句)

(3)提交事務

conn.commit() #提交事務,將數據寫入文件,保存到磁盤中。

查詢SQL語句

從“表”中查詢滿足條件表達式的“目標列”

SELECT 目標列 FROM 表 [WHERE 條件表達式]

如,查詢年齡20歲以下的學生姓名及其年齡:

select sname age from student where age<20

如,查詢表中所有記錄:

select * from student

fetchall()

返回多條記錄(rows),如果沒有結果,則返回空()

sqlite_master表

每一個 SQLite 數據庫都有一個叫 sqlite_master 的表,該表會自動創(chuàng)建。

sqlite_master是一個特殊表, 存儲數據庫的元信息, 如表(table), 索引(index), 視圖(view), 觸發(fā)器(trigger), 可通過select查詢相關信息。

select name,sql from sqlite_master where type='table'

該語句用于查詢數據庫中數據表的名稱name,以及創(chuàng)建表的SQL語句

更新記錄

更新記錄的SQL語句:

UPDATE 表名 SET 列名=表達式… [WHERE 條件]

當“條件”成立時,將某列的值改為“表達式” 如:

update student set cj=90 where xh="001"

可將001號同學的成績改為90

刪除記錄

DROP TABLE和DELETE語句:

(1)刪除數據表所有記錄

DELETE FROM <表名>

如,刪除student表

delete from student

(2)刪除記錄

DELETE FROM <表名> WHERE <條件>

如,刪除表中學號xh為'001'記錄

delete from student where xh='001'

(3)刪除整個數據表

DROP TABLE 表名

如,刪除student表結構

drop table student

例題練習

第1關:創(chuàng)建和連接數據庫文件

本關任務:在當前目錄下,創(chuàng)建和連接mytest.db數據庫。

代碼解析

def return_values():
#***********Begin**********#
    #(1)導入內置sqlite3模塊
    import sqlite3
    #(2)創(chuàng)建conn連接對象(在當前路徑下建立mytest.db數據庫)
    conn = sqlite3.connect("mytest.db")
    #(3)關閉連接
    conn.close()
#***********End**********#

第2關:創(chuàng)建數據表

本關任務:創(chuàng)建或打開數據表示例。

代碼解析

#(1)導入sqlite3模塊
import sqlite3
#(2)創(chuàng)建conn連接對象,建立mytest.db數據庫
conn = sqlite3.connect("mytest.db")
#(3)定義sql語句,創(chuàng)建mytb數據表,表中有三個字段xm、cj、kc,其數據類型分別為char、real、text
sql_demo = "create table if not exists mytb( xm char , cj real , kc text )"
#(4)執(zhí)行sql語句
conn.execute(sql_demo)
#(5)關閉連接
conn.close()

第3關:插入記錄

本關任務:創(chuàng)建一個sqlite3數據庫文件mytest.db,再創(chuàng)建一個數據表mytb.db,往表里插入三行記錄。

代碼解析

#(1)導入sqlite3模塊
import sqlite3
#(2)創(chuàng)建數據庫文件mytest.db
conn = sqlite3.connect("mytest.db")
#(3)定義一個游標對象
cur = conn.cursor()
#(4)定義創(chuàng)建數據表SQL語句
sql_create = "create table if not exists mytb(xm char,cj real,kc text)"
sql_insert_by = "insert into mytb values ('寶玉',85,'計算機')"
sql_insert_dy = "insert into mytb values ('黛玉',90,'計算機')"
sql_insert_bc = "insert into mytb values ('寶釵',80,'數據庫')"
#(5)執(zhí)行SQL語句,創(chuàng)建數據表mytb
conn.execute(sql_create)
#(6)依次插入3條記錄,內容分別為:('寶玉',85,'計算機')、('黛玉',92,'計算機')、('寶釵',80,'數據庫')
cur.execute(sql_insert_by)
cur.execute(sql_insert_dy)
cur.execute(sql_insert_bc)
#(7)提交事務
conn.commit()
#(8)關閉連接
cur.close()
conn.close()

第4關:查詢記錄

本關任務:設計一個程序,查詢已有數據庫文件myfile.db中數據表mytb中所有記錄,及查詢數據表結構。

代碼解析

#(1)導入sqlite3模塊
import sqlite3
#(2)打開數據庫文件myfile.db
conn = sqlite3.connect("myfile.db")
#(3)定義一個游標對象
cur = conn.cursor()
sql_select = "select * from mytb"
#(4)查詢數據表mytb中所有記錄,并賦值給列表
cur.execute(sql_select)
lst = cur.fetchall()
#(5)輸出記錄數
print(f"共{len(lst)}條記錄")
#(6)輸出所有記錄列表
print(lst)
#(7)從sqlite_master表中查詢數據表的名稱和創(chuàng)建時的sql語句,查詢結果賦值給列表,并輸出列表內容
cur.execute("select name,sql from sqlite_master ")
print(cur.fetchall())

第5關:更新和刪除記錄

本關任務:在sqlite數據庫中更新和刪除記錄

代碼解析

#(1)導入sqlite3模塊
import sqlite3
#(2)打開數據庫my.db
conn = sqlite3.connect("my.db")
#(3)定義游標
cur = conn.cursor()
#(4)更新記錄,將xm“寶玉”的成績cj改為0
cur.execute("update mytb set cj = 0 where xm = '寶玉'")
#(5)刪除成績cj>90的記錄
cur.execute("delete from mytb where cj > 90")
#(6)刪除數據表mytb中所有記錄
cur.execute("delete from mytb")
#(7)刪除整個數據表mytb
cur.execute("drop table mytb")
#(8)提交事務
conn.commit()
#(9)關閉游標
cur.close()
#(10)關閉數據庫連接
conn.close()

第6關:圖書數據庫的綜合操作

本關任務:在SQLite中創(chuàng)建數據庫mybook.db;在數據庫中創(chuàng)建數據表mytb;在表中定義:isbn(text)、書名(text)、價格(real)等字段,并插入記錄。

代碼解析

#(1)導入sqlite3模塊
import sqlite3
#(2)創(chuàng)建數據庫mybook.db
conn = sqlite3.connect("mybook.db")
#(3)定義游標對象
cur = conn.cursor()
#(4)創(chuàng)建表mytb
cur.execute("create table if not exists mytb ( isbn text , 書名 text , 價格 real)")
#(5)插入記錄('9787302518358','歐美戲劇選讀',88.00)
cur.execute("insert into mytb values ('9787302518358','歐美戲劇選讀',88.00)")
#(6)插入記錄('9787302454038','組織理論與設計 第12版',75.00)
cur.execute("insert into mytb values ('9787302454038','組織理論與設計 第12版',75.00)")
#(7)插入記錄('9787302496878','中國文化經典讀本',45.00)
cur.execute("insert into mytb values ('9787302496878','中國文化經典讀本',45.00)")
#(8)提交事務,保存數據
conn.commit()
#(9)讀入所有記錄,將查詢記錄賦值給列表,遍歷輸出列表內容
cur.execute("select * from mytb")
lst = cur.fetchall()
for x in lst:
    print(x)
#(10)關閉游標
cur.close()
#(11)關閉數據庫
conn.close()

關于“Python中SQLite數據庫怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI