首頁 > 後端開發 > Python教學 > Python中SQLite資料庫如何使用

Python中SQLite資料庫如何使用

王林
發布: 2023-05-11 08:25:06
轉載
1898 人瀏覽過

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

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

預備知識

sqlite資料庫的建立與連接

sqlite資料庫的建立與連接分三步驟:

(1)導入模組

import sqlite3
#或者:
from sqlite3 import dbapi2       #导入sqlite3模块的dbapi2接口模块
登入後複製

(2)利用connect方法建立資料庫

connection=sqlite3.connect(filename) 
#filename为数据库文件名,如果该文件存在则打开该数据库,如果不存在则创建一个新的数据库文件。 
#该方法返回一个数据库连接对象
登入後複製

(3)關閉連線物件

connection.close() 
#关闭连接,更新数据库文件
登入後複製

SQL語句建立資料表

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

在SQL中,利用create語句建立表格語法結構如下:

create table 表名(字段1,…,字段n)
登入後複製

如,建立mytb表:

create table if not exists mytb( xm char, cj real, kc text )
登入後複製

表名是mytb;IF NOT EXISTS表示如果資料庫中不存在mytb資料表,就建立該表;如果該資料表已經存在,則什麼也不做;

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

SQLite3支援的資料型別有:

null(值=空)、integer(整數)、real (浮點數)、text(字串文字)、blob(二進位資料塊)。

execute()方法

在Python中我們可以使用execute 方法執行一條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()執行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 的表,該表會自動建立。

sqlite_master是一個特殊表, 儲存資料庫的元資訊, 如表(table), 索引(index), 視圖(view), 觸發器(trigger), 可透過select查詢相關資訊。

select name,sql from sqlite_master where type=&#39;table&#39;
登入後複製

此語句用於查詢資料庫中資料表的名稱name,以及建立表格的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=&#39;001&#39;
登入後複製

(3)刪除整個資料表

DROP TABLE 表名
登入後複製

如,刪除student表結構

drop table student
登入後複製

範例練習

第1關:建立和連接資料庫檔案

本關任務:在目前目錄下,建立並連接mytest.db資料庫。

程式碼解析

def return_values():
#***********Begin**********#
    #(1)导入内置sqlite3模块
    import sqlite3
    #(2)创建conn连接对象(在当前路径下建立mytest.db数据库)
    conn = sqlite3.connect("mytest.db")
    #(3)关闭连接
    conn.close()
#***********End**********#
登入後複製

第2關:建立資料表

本關任務:建立或開啟資料表示例。

程式碼解析

#(1)导入sqlite3模块
import sqlite3
#(2)创建conn连接对象,建立mytest.db数据库
conn = sqlite3.connect("mytest.db")
#(3)定义sql语句,创建mytb数据表,表中有三个字段xm、cj、kc,其数据类型分别为char、real、text
sql_demo = "create table if not exists mytb( xm char , cj real , kc text )"
#(4)执行sql语句
conn.execute(sql_demo)
#(5)关闭连接
conn.close()
登入後複製

第3關:插入記錄

本關任務:建立一個sqlite3資料庫檔案mytest.db,再建立一個資料表mytb.db,往表裡插入三行記錄。

程式碼解析

#(1)导入sqlite3模块
import sqlite3
#(2)创建数据库文件mytest.db
conn = sqlite3.connect("mytest.db")
#(3)定义一个游标对象
cur = conn.cursor()
#(4)定义创建数据表SQL语句
sql_create = "create table if not exists mytb(xm char,cj real,kc text)"
sql_insert_by = "insert into mytb values (&#39;宝玉&#39;,85,&#39;计算机&#39;)"
sql_insert_dy = "insert into mytb values (&#39;黛玉&#39;,90,&#39;计算机&#39;)"
sql_insert_bc = "insert into mytb values (&#39;宝钗&#39;,80,&#39;数据库&#39;)"
#(5)执行SQL语句,创建数据表mytb
conn.execute(sql_create)
#(6)依次插入3条记录,内容分别为:(&#39;宝玉&#39;,85,&#39;计算机&#39;)、(&#39;黛玉&#39;,92,&#39;计算机&#39;)、(&#39;宝钗&#39;,80,&#39;数据库&#39;)
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表中查询数据表的名称和创建时的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 = &#39;宝玉&#39;")
#(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中建立資料庫mybook.db;在資料庫中建立資料表mytb;在表中定義:isbn(text )、書名(text)、價格(real)等字段,並插入記錄。

程式碼解析

#(1)导入sqlite3模块
import sqlite3
#(2)创建数据库mybook.db
conn = sqlite3.connect("mybook.db")
#(3)定义游标对象
cur = conn.cursor()
#(4)创建表mytb
cur.execute("create table if not exists mytb ( isbn text , 书名 text , 价格 real)")
#(5)插入记录(&#39;9787302518358&#39;,&#39;欧美戏剧选读&#39;,88.00)
cur.execute("insert into mytb values (&#39;9787302518358&#39;,&#39;欧美戏剧选读&#39;,88.00)")
#(6)插入记录(&#39;9787302454038&#39;,&#39;组织理论与设计 第12版&#39;,75.00)
cur.execute("insert into mytb values (&#39;9787302454038&#39;,&#39;组织理论与设计 第12版&#39;,75.00)")
#(7)插入记录(&#39;9787302496878&#39;,&#39;中国文化经典读本&#39;,45.00)
cur.execute("insert into mytb values (&#39;9787302496878&#39;,&#39;中国文化经典读本&#39;,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資料庫如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板