目錄
- 前言
- 簡(jiǎn)單介紹
- 創(chuàng)建或連接數(shù)據(jù)庫(kù)
- 游標(biāo)
- 創(chuàng)建表
- 插入
- 查詢
- 查詢總數(shù)
- 查詢所有
- 查詢第一條
- 分頁(yè)查詢
- 更新
- 刪除
- 總結(jié)
前言
sqlite的官網(wǎng) sqlite.org/index.html SQLite 作為一個(gè)SQL數(shù)據(jù)庫(kù)引擎,是由C語(yǔ)言實(shí)現(xiàn)的,又小又快,具有高可靠性且功能齊全。 作為嵌入式數(shù)據(jù)庫(kù),在移動(dòng)設(shè)備中使用非常廣泛且方便。Python3中內(nèi)嵌了sqlite的驅(qū)動(dòng),我們直接導(dǎo)入就行。
簡(jiǎn)單介紹
首先我們給大家一個(gè)能夠運(yùn)行的Python程序,讓大家對(duì)Python操作sqlite數(shù)據(jù)庫(kù)有一個(gè)直觀的感受。
# 導(dǎo)入SQLite驅(qū)動(dòng):
import sqlite3
# 連接到SQLite數(shù)據(jù)庫(kù)
# 數(shù)據(jù)庫(kù)文件是test.db
# 如果文件不存在,會(huì)自動(dòng)在當(dāng)前目錄創(chuàng)建:
conn = sqlite3.connect('test.db')
# 創(chuàng)建一個(gè)Cursor:
cursor = conn.cursor()
# 執(zhí)行一條SQL語(yǔ)句,創(chuàng)建user表:
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 繼續(xù)執(zhí)行一條SQL語(yǔ)句,插入一條記錄:
cursor.execute('insert into user (id, name) values (\'1', \'Michael')')
# 通過(guò)rowcount獲得插入的行數(shù):
print(cursor.rowcount)
# 關(guān)閉Cursor:
cursor.close()
# 提交事務(wù):
conn.commit()
# 關(guān)閉Connection:
conn.close()
我們用Navicat連接這個(gè)數(shù)據(jù)庫(kù),可以看到
需要注意的是每次關(guān)閉連接之前,一定要commit,否則做的任何操作都不會(huì)提交到數(shù)據(jù)庫(kù)中
創(chuàng)建或連接數(shù)據(jù)庫(kù)
conn = sqlite3.connect('test.db') 首先我們要做的是連接數(shù)據(jù)庫(kù),注意如果我們要訪問(wèn)的數(shù)據(jù)庫(kù)不存在,那么會(huì)自動(dòng)創(chuàng)建一個(gè)的 conn 就是一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象從上面的程序里我們可以看到
1.它可以創(chuàng)建一個(gè)游標(biāo)cursor = conn.cursor()
2.它可以提交事務(wù)conn.commit()
3.它還可以關(guān)閉連接cursor.close()
4.它還可以對(duì)事務(wù)做回滾cursor.rollback(),不過(guò)程序之中沒(méi)有展示出來(lái)
隔離級(jí)別可以在conn建立之前通過(guò)傳入?yún)?shù)來(lái)進(jìn)行修改
conn = sqlite3.connect('test.db', isolation_level=None) 這樣,對(duì)應(yīng)的代碼就不再需要commit()操作了
游標(biāo)
游標(biāo)對(duì)象有以下的操作
execute()--執(zhí)行sql語(yǔ)句
executemany--執(zhí)行多條sql語(yǔ)句
close()--關(guān)閉游標(biāo)
fetchone()--從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄
fetchmany()--從結(jié)果中取多條記錄
fetchall()--從結(jié)果中取出所有記錄
scroll()--游標(biāo)滾動(dòng)
我們一般用到的是execute()更多一些
創(chuàng)建表
下面的代碼可以創(chuàng)建表
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
可以看到建表語(yǔ)句和MySQL非常類似 創(chuàng)建自增主鍵的語(yǔ)句
CREATE TABLE "main"."test" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT
);
在Navicat的創(chuàng)建sqlite自增主鍵和MySQL也是非常類似
插入
插入這里很簡(jiǎn)單的
cursor.execute('insert into user (id, name) values (\'1', \'Michael')')
查詢
查詢這里需要講一講 是要先讓游標(biāo)將sql語(yǔ)句執(zhí)行掉,再通過(guò)上面介紹的
fetchone()--從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄
fetchmany()--從結(jié)果中取多條記錄
fetchall()--從結(jié)果中取出所有記錄
來(lái)進(jìn)行查詢
查詢總數(shù)
cursor.execute("select count(*) from user")
print(cursor.fetchone())
# (2,)
查詢所有
cursor.execute("select * from user")
print(cursor.fetchall())
# [('1', 'Michael'), ('2', 'Danny')]
查詢第一條
cursor.execute("select * from user")
print(cursor.fetchone())
# ('1', 'Michael')
分頁(yè)查詢
cursor.execute("select * from user LIMIT 1, 2")
print(cursor.fetchall())
更新
更新呢也比較簡(jiǎn)單
cursor.execute("update user set name='test' where id='1'")
這里只要?jiǎng)e忘了執(zhí)行commit就行
刪除
cursor.execute("delete from catalog where id = 4")
總結(jié)
人生苦短,我用 Python,在強(qiáng)大的Python幫助下,我們只需幾行代碼就可以操作sqlite數(shù)據(jù)庫(kù)來(lái)儲(chǔ)存查詢我們想要的數(shù)據(jù)。
以上就是python 操作sqlite數(shù)據(jù)庫(kù)的方法的詳細(xì)內(nèi)容,更多關(guān)于python 操作sqlite數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- Python標(biāo)準(zhǔn)庫(kù)之?dāng)?shù)據(jù)庫(kù) sqlite3
- python數(shù)據(jù)庫(kù)如何連接SQLite詳解
- python sqlite3 判斷cursor的結(jié)果是否為空的案例
- Python 操作SQLite數(shù)據(jù)庫(kù)的示例
- python鏈接sqlite數(shù)據(jù)庫(kù)的詳細(xì)代碼實(shí)例