這篇文章主要介紹“Python中SQLite數(shù)據(jù)庫怎么使用”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“Python中SQLite數(shù)據(jù)庫怎么使用”文章能幫助大家解決問題。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、天等網(wǎng)站維護(hù)、網(wǎng)站推廣。
SQL(結(jié)構(gòu)化查詢語言)是一種通用數(shù)據(jù)庫查詢語言。SQL具有數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制功能,可以完成數(shù)據(jù)庫的全部工作。SQL語言使用時(shí)只需要用告訴計(jì)算機(jī)“做什么”,而不需要告訴它“怎么做”。
SQL語言有兩種使用方式,一是直接以命令方式交互使用;二是嵌入到C/C++、Python等主語言中使用。
sqlite數(shù)據(jù)庫的創(chuàng)建與連接
sqlite數(shù)據(jù)庫的創(chuàng)建與連接分三步走:
(1)導(dǎo)入模塊
import sqlite3 #或者: from sqlite3 import dbapi2 #導(dǎo)入sqlite3模塊的dbapi2接口模塊
(2)利用connect方法創(chuàng)建數(shù)據(jù)庫
connection=sqlite3.connect(filename) #filename為數(shù)據(jù)庫文件名,如果該文件存在則打開該數(shù)據(jù)庫,如果不存在則創(chuàng)建一個(gè)新的數(shù)據(jù)庫文件。 #該方法返回一個(gè)數(shù)據(jù)庫連接對(duì)象
(3)關(guān)閉連接對(duì)象
connection.close() #關(guān)閉連接,更新數(shù)據(jù)庫文件
表是數(shù)據(jù)庫中存放關(guān)系數(shù)據(jù)的集合,一個(gè)數(shù)據(jù)庫里通常包含了多個(gè)表,如學(xué)生表、班級(jí)表、教師表等,表和表之間通過外鍵關(guān)聯(lián)。
在SQL中,利用create語句創(chuàng)建表語法結(jié)構(gòu)如下:
create table 表名(字段1,…,字段n)
如,創(chuàng)建mytb表:
create table if not exists mytb( xm char, cj real, kc text )
表名是mytb;IF NOT EXISTS表示如果數(shù)據(jù)庫中不存在mytb數(shù)據(jù)表,就創(chuàng)建該表;如果該數(shù)據(jù)表已經(jīng)存在,則什么也不做;
xm char, cj real, kc text表示該數(shù)據(jù)表有3個(gè)字段,xm(姓名)是字符串類型,cj(成績)是浮點(diǎn)數(shù)類型,kc(課程)是文本字符串。
SQLite3支持的數(shù)據(jù)類型有:
null
(值=空)、integer
(整數(shù))、real
(浮點(diǎn)數(shù))、text
(字符串文本)、blob
(二進(jìn)制數(shù)據(jù)塊)。
在Python中我們可以使用 execute 方法執(zhí)行一條SQL語句
conn.execute('create table if not exists mytb( xm char, cj real, kc text )')
conn為連接對(duì)象 execute()方法中參數(shù)為一條SQL語句,類型為字符串
(1)插入記錄的SQL語句
語法格式如下 :
insert into 表名 [字段名] values [常量]
如:
insert into Persons values ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
(2)利用execute()執(zhí)行SQL語句
cur.exceute(sql語句)
(3)提交事務(wù)
conn.commit() #提交事務(wù),將數(shù)據(jù)寫入文件,保存到磁盤中。
從“表”中查詢滿足條件表達(dá)式的“目標(biāo)列”
SELECT 目標(biāo)列 FROM 表 [WHERE 條件表達(dá)式]
如,查詢年齡20歲以下的學(xué)生姓名及其年齡:
select sname age from student where age<20
如,查詢表中所有記錄:
select * from student
返回多條記錄(rows),如果沒有結(jié)果,則返回空()
每一個(gè) SQLite 數(shù)據(jù)庫都有一個(gè)叫 sqlite_master 的表,該表會(huì)自動(dòng)創(chuàng)建。
sqlite_master是一個(gè)特殊表, 存儲(chǔ)數(shù)據(jù)庫的元信息, 如表(table), 索引(index), 視圖(view), 觸發(fā)器(trigger), 可通過select查詢相關(guān)信息。
select name,sql from sqlite_master where type='table'
該語句用于查詢數(shù)據(jù)庫中數(shù)據(jù)表的名稱name,以及創(chuàng)建表的SQL語句
更新記錄的SQL語句:
UPDATE 表名 SET 列名=表達(dá)式… [WHERE 條件]
當(dāng)“條件”成立時(shí),將某列的值改為“表達(dá)式” 如:
update student set cj=90 where xh="001"
可將001號(hào)同學(xué)的成績改為90
DROP TABLE和DELETE語句:
(1)刪除數(shù)據(jù)表所有記錄
DELETE FROM <表名>
如,刪除student表
delete from student
(2)刪除記錄
DELETE FROM <表名> WHERE <條件>
如,刪除表中學(xué)號(hào)xh為'001'記錄
delete from student where xh='001'
(3)刪除整個(gè)數(shù)據(jù)表
DROP TABLE 表名
如,刪除student表結(jié)構(gòu)
drop table student
第1關(guān):創(chuàng)建和連接數(shù)據(jù)庫文件
本關(guān)任務(wù):在當(dāng)前目錄下,創(chuàng)建和連接mytest.db數(shù)據(jù)庫。
代碼解析
def return_values(): #***********Begin**********# #(1)導(dǎo)入內(nèi)置sqlite3模塊 import sqlite3 #(2)創(chuàng)建conn連接對(duì)象(在當(dāng)前路徑下建立mytest.db數(shù)據(jù)庫) conn = sqlite3.connect("mytest.db") #(3)關(guān)閉連接 conn.close() #***********End**********#
第2關(guān):創(chuàng)建數(shù)據(jù)表
本關(guān)任務(wù):創(chuàng)建或打開數(shù)據(jù)表示例。
代碼解析
#(1)導(dǎo)入sqlite3模塊 import sqlite3 #(2)創(chuàng)建conn連接對(duì)象,建立mytest.db數(shù)據(jù)庫 conn = sqlite3.connect("mytest.db") #(3)定義sql語句,創(chuàng)建mytb數(shù)據(jù)表,表中有三個(gè)字段xm、cj、kc,其數(shù)據(jù)類型分別為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)關(guān)閉連接 conn.close()
第3關(guān):插入記錄
本關(guān)任務(wù):創(chuàng)建一個(gè)sqlite3數(shù)據(jù)庫文件mytest.db,再創(chuàng)建一個(gè)數(shù)據(jù)表mytb.db,往表里插入三行記錄。
代碼解析
#(1)導(dǎo)入sqlite3模塊 import sqlite3 #(2)創(chuàng)建數(shù)據(jù)庫文件mytest.db conn = sqlite3.connect("mytest.db") #(3)定義一個(gè)游標(biāo)對(duì)象 cur = conn.cursor() #(4)定義創(chuàng)建數(shù)據(jù)表SQL語句 sql_create = "create table if not exists mytb(xm char,cj real,kc text)" sql_insert_by = "insert into mytb values ('寶玉',85,'計(jì)算機(jī)')" sql_insert_dy = "insert into mytb values ('黛玉',90,'計(jì)算機(jī)')" sql_insert_bc = "insert into mytb values ('寶釵',80,'數(shù)據(jù)庫')" #(5)執(zhí)行SQL語句,創(chuàng)建數(shù)據(jù)表mytb conn.execute(sql_create) #(6)依次插入3條記錄,內(nèi)容分別為:('寶玉',85,'計(jì)算機(jī)')、('黛玉',92,'計(jì)算機(jī)')、('寶釵',80,'數(shù)據(jù)庫') cur.execute(sql_insert_by) cur.execute(sql_insert_dy) cur.execute(sql_insert_bc) #(7)提交事務(wù) conn.commit() #(8)關(guān)閉連接 cur.close() conn.close()
第4關(guān):查詢記錄
本關(guān)任務(wù):設(shè)計(jì)一個(gè)程序,查詢已有數(shù)據(jù)庫文件myfile.db中數(shù)據(jù)表mytb中所有記錄,及查詢數(shù)據(jù)表結(jié)構(gòu)。
代碼解析
#(1)導(dǎo)入sqlite3模塊 import sqlite3 #(2)打開數(shù)據(jù)庫文件myfile.db conn = sqlite3.connect("myfile.db") #(3)定義一個(gè)游標(biāo)對(duì)象 cur = conn.cursor() sql_select = "select * from mytb" #(4)查詢數(shù)據(jù)表mytb中所有記錄,并賦值給列表 cur.execute(sql_select) lst = cur.fetchall() #(5)輸出記錄數(shù) print(f"共{len(lst)}條記錄") #(6)輸出所有記錄列表 print(lst) #(7)從sqlite_master表中查詢數(shù)據(jù)表的名稱和創(chuàng)建時(shí)的sql語句,查詢結(jié)果賦值給列表,并輸出列表內(nèi)容 cur.execute("select name,sql from sqlite_master ") print(cur.fetchall())
第5關(guān):更新和刪除記錄
本關(guān)任務(wù):在sqlite數(shù)據(jù)庫中更新和刪除記錄
代碼解析
#(1)導(dǎo)入sqlite3模塊 import sqlite3 #(2)打開數(shù)據(jù)庫my.db conn = sqlite3.connect("my.db") #(3)定義游標(biāo) 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)刪除數(shù)據(jù)表mytb中所有記錄 cur.execute("delete from mytb") #(7)刪除整個(gè)數(shù)據(jù)表mytb cur.execute("drop table mytb") #(8)提交事務(wù) conn.commit() #(9)關(guān)閉游標(biāo) cur.close() #(10)關(guān)閉數(shù)據(jù)庫連接 conn.close()
第6關(guān):圖書數(shù)據(jù)庫的綜合操作
本關(guān)任務(wù):在SQLite中創(chuàng)建數(shù)據(jù)庫mybook.db;在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表mytb;在表中定義:isbn(text)、書名(text)、價(jià)格(real)等字段,并插入記錄。
代碼解析
#(1)導(dǎo)入sqlite3模塊 import sqlite3 #(2)創(chuàng)建數(shù)據(jù)庫mybook.db conn = sqlite3.connect("mybook.db") #(3)定義游標(biāo)對(duì)象 cur = conn.cursor() #(4)創(chuàng)建表mytb cur.execute("create table if not exists mytb ( isbn text , 書名 text , 價(jià)格 real)") #(5)插入記錄('9787302518358','歐美戲劇選讀',88.00) cur.execute("insert into mytb values ('9787302518358','歐美戲劇選讀',88.00)") #(6)插入記錄('9787302454038','組織理論與設(shè)計(jì) 第12版',75.00) cur.execute("insert into mytb values ('9787302454038','組織理論與設(shè)計(jì) 第12版',75.00)") #(7)插入記錄('9787302496878','中國文化經(jīng)典讀本',45.00) cur.execute("insert into mytb values ('9787302496878','中國文化經(jīng)典讀本',45.00)") #(8)提交事務(wù),保存數(shù)據(jù) conn.commit() #(9)讀入所有記錄,將查詢記錄賦值給列表,遍歷輸出列表內(nèi)容 cur.execute("select * from mytb") lst = cur.fetchall() for x in lst: print(x) #(10)關(guān)閉游標(biāo) cur.close() #(11)關(guān)閉數(shù)據(jù)庫 conn.close()
關(guān)于“Python中SQLite數(shù)據(jù)庫怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
名稱欄目:Python中SQLite數(shù)據(jù)庫怎么使用
文章分享:http://chinadenli.net/article26/gidojg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站內(nèi)鏈、網(wǎng)站策劃、建站公司、移動(dòng)網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)