溫馨提示×

溫馨提示×

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

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

怎么用python操作sqlite數(shù)據(jù)庫

發(fā)布時間:2021-06-22 17:56:39 來源:億速云 閱讀:213 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“怎么用python操作sqlite數(shù)據(jù)庫”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

    前言

    sqlite的官網(wǎng) sqlite.org/index.html SQLite 作為一個SQL數(shù)據(jù)庫引擎,是由C語言實現(xiàn)的,又小又快,具有高可靠性且功能齊全。 作為嵌入式數(shù)據(jù)庫,在移動設(shè)備中使用非常廣泛且方便。Python3中內(nèi)嵌了sqlite的驅(qū)動,我們直接導(dǎo)入就行。

    import sqlite3

    簡單介紹

    首先我們給大家一個能夠運行的Python程序,讓大家對Python操作sqlite數(shù)據(jù)庫有一個直觀的感受。

    # 導(dǎo)入SQLite驅(qū)動:
    import sqlite3
    # 連接到SQLite數(shù)據(jù)庫
    # 數(shù)據(jù)庫文件是test.db
    # 如果文件不存在,會自動在當(dāng)前目錄創(chuàng)建:
    conn = sqlite3.connect('test.db')
    # 創(chuàng)建一個Cursor:
    cursor = conn.cursor()
    # 執(zhí)行一條SQL語句,創(chuàng)建user表:
    cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
    
    
    # 繼續(xù)執(zhí)行一條SQL語句,插入一條記錄:
    cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
    
    
    # 通過rowcount獲得插入的行數(shù):
    print(cursor.rowcount)
    
    
    # 關(guān)閉Cursor:
    cursor.close()
    # 提交事務(wù):
    conn.commit()
    # 關(guān)閉Connection:
    conn.close()

    我們用Navicat連接這個數(shù)據(jù)庫,可以看到

    怎么用python操作sqlite數(shù)據(jù)庫

    需要注意的是每次關(guān)閉連接之前,一定要commit,否則做的任何操作都不會提交到數(shù)據(jù)庫中

    創(chuàng)建或連接數(shù)據(jù)庫

    conn = sqlite3.connect('test.db') 首先我們要做的是連接數(shù)據(jù)庫,注意如果我們要訪問的數(shù)據(jù)庫不存在,那么會自動創(chuàng)建一個的 conn 就是一個數(shù)據(jù)庫連接對象從上面的程序里我們可以看到

    1.它可以創(chuàng)建一個游標(biāo)cursor = conn.cursor()
    2.它可以提交事務(wù)conn.commit()
    3.它還可以關(guān)閉連接cursor.close()
    4.它還可以對事務(wù)做回滾cursor.rollback(),不過程序之中沒有展示出來

    隔離級別可以在conn建立之前通過傳入?yún)?shù)來進(jìn)行修改
    conn = sqlite3.connect('test.db', isolation_level=None) 這樣,對應(yīng)的代碼就不再需要commit()操作了

    游標(biāo)

    游標(biāo)對象有以下的操作

    execute()--執(zhí)行sql語句   
    executemany--執(zhí)行多條sql語句   
    close()--關(guān)閉游標(biāo)   
    fetchone()--從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄   
    fetchmany()--從結(jié)果中取多條記錄   
    fetchall()--從結(jié)果中取出所有記錄   
    scroll()--游標(biāo)滾動

    我們一般用到的是execute()更多一些

    創(chuàng)建表

    下面的代碼可以創(chuàng)建表

    cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')

    可以看到建表語句和MySQL非常類似 創(chuàng)建自增主鍵的語句

    CREATE TABLE "main"."test" (
      "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT
    );

    在Navicat的創(chuàng)建sqlite自增主鍵和MySQL也是非常類似

    怎么用python操作sqlite數(shù)據(jù)庫

    插入

    插入這里很簡單的

    cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')

    查詢

    查詢這里需要講一講 是要先讓游標(biāo)將sql語句執(zhí)行掉,再通過上面介紹的

    fetchone()--從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄   
    fetchmany()--從結(jié)果中取多條記錄   
    fetchall()--從結(jié)果中取出所有記錄

    來進(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')

    分頁查詢

    cursor.execute("select * from user LIMIT 1, 2")
    print(cursor.fetchall())

    更新

    更新呢也比較簡單

    cursor.execute("update user set name='test' where id='1'")

    這里只要別忘了執(zhí)行commit就行

    刪除

    cursor.execute("delete from catalog where id = 4")

    “怎么用python操作sqlite數(shù)據(jù)庫”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

    向AI問一下細(xì)節(jié)

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

    AI