黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

淺談Python自帶數(shù)據(jù)庫(kù)SQLite3模塊的使用(全面詳細(xì))

系統(tǒng) 2366 0

目錄

  • 寫(xiě)在前面
  • 一:使用數(shù)據(jù)庫(kù)的宏觀過(guò)程
  • 二:數(shù)據(jù)庫(kù)使用
    • 1、導(dǎo)入數(shù)據(jù)庫(kù)模塊
    • 2、打開(kāi)數(shù)據(jù)庫(kù)
      • 2.1、在硬盤上建立數(shù)據(jù)庫(kù)
      • 2.2、在內(nèi)存上建立數(shù)據(jù)庫(kù)
    • 3、創(chuàng)建游標(biāo)
    • 4、執(zhí)行SQL語(yǔ)句
      • 4.1、創(chuàng)建表
      • 4.2、新增數(shù)據(jù)
      • 4.2、更新數(shù)據(jù)
      • 4.3、刪除數(shù)據(jù)
      • 4.4、查詢數(shù)據(jù)
      • 4.5、刪除表
    • 5、查詢并顯示數(shù)據(jù)
      • 5.1、全部顯示
      • 5.2、顯示一條
      • 5.2、顯示多條
    • 6、事務(wù)提交或回滾
      • 6.1、提交
      • 6.2、回滾
    • 7、關(guān)閉數(shù)據(jù)庫(kù)連接和游標(biāo)

寫(xiě)在前面

??SQLite3數(shù)據(jù)庫(kù)是一款非常小巧輕量級(jí)的嵌入式開(kāi)源數(shù)據(jù)庫(kù)軟件,也就是說(shuō)沒(méi)有獨(dú)立的維護(hù)進(jìn)程,所有的維護(hù)都來(lái)自于程序本身。由于其方便快捷,從python2.5開(kāi)始SQLite3就成了Python語(yǔ)言的標(biāo)準(zhǔn)模塊了;這也是Python中唯一一個(gè)數(shù)據(jù)庫(kù)接口類模塊,適合用戶開(kāi)發(fā) 小型數(shù)據(jù)庫(kù)系統(tǒng)。 ,此外建議小伙伴們?cè)陂喿x之前先學(xué)習(xí)一些SQL數(shù)據(jù)庫(kù)語(yǔ)言的基本語(yǔ)法,否則看這SQL語(yǔ)句會(huì)有一點(diǎn)蒙。接下來(lái)就體驗(yàn)一下它的神秘力量吧!

一:使用數(shù)據(jù)庫(kù)的宏觀過(guò)程

??我猜很多小伙伴們開(kāi)始學(xué)習(xí)數(shù)據(jù)庫(kù)時(shí)應(yīng)該和我一樣把重點(diǎn)放在學(xué)習(xí)使用數(shù)據(jù)庫(kù)的每一條SQL語(yǔ)句上,可是當(dāng)我學(xué)習(xí)完近所有的語(yǔ)句后發(fā)現(xiàn):我還是對(duì)建立使用數(shù)據(jù)庫(kù)的過(guò)程一知半解,這樣缺少?gòu)恼w上對(duì)數(shù)據(jù)庫(kù)的認(rèn)識(shí)和了解。所以 我認(rèn)為正確的方法應(yīng)該是:先從整體上對(duì)數(shù)據(jù)庫(kù)的使用過(guò)程有一個(gè)清晰宏觀的掌握,之后再深入學(xué)習(xí),這樣食用味道會(huì)更佳哦!

??話不多說(shuō),上菜:
淺談Python自帶數(shù)據(jù)庫(kù)SQLite3模塊的使用(全面詳細(xì))_第1張圖片

二:數(shù)據(jù)庫(kù)使用

1、導(dǎo)入數(shù)據(jù)庫(kù)模塊

??此處沒(méi)有什么可說(shuō)的,由于python2.5以后的安裝包已經(jīng)自帶SQLite3的軟件包了,所以一行語(yǔ)句直接導(dǎo)入即可。

            
              
                import
              
               sqlite3

            
          

2、打開(kāi)數(shù)據(jù)庫(kù)

??在python中,使用sqlite3創(chuàng)建數(shù)據(jù)庫(kù)的連接,當(dāng)我們指定的數(shù)據(jù)庫(kù)文件不存在的時(shí)候連接對(duì)象會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)文件;如果數(shù)據(jù)庫(kù)文件已經(jīng)存在,則連接對(duì)象不會(huì)再創(chuàng)建數(shù)據(jù)庫(kù)文件,而是直接打開(kāi)該數(shù)據(jù)庫(kù)文件。 連接對(duì)象可以是硬盤上面的數(shù)據(jù)庫(kù)文件,也可以是建立在內(nèi)存(memory)中的,在內(nèi)存中的數(shù)據(jù)庫(kù)執(zhí)行完任何操作后,都不需要提交事務(wù)的(commit)

??connect方法返回con對(duì)象,即是數(shù)據(jù)庫(kù)鏈接對(duì)象,它提供了以下方法:

方法 描述
.cursor() 創(chuàng)建一個(gè)游標(biāo)對(duì)象
.commit() 處理事務(wù)提交
.rollback() 處理事務(wù)回滾
.close() 關(guān)閉一個(gè)數(shù)據(jù)庫(kù)連接

2.1、在硬盤上建立數(shù)據(jù)庫(kù)

方法一:

            
              	con
              
                =
              
              sqlite3
              
                .
              
              connect
              
                (
              
              
                "E:\Test.db"
              
              
                )
              
            
          

??注意: E:\Test.db E:\\Test.db E:\TEST.db 均相同。由此可見(jiàn) 數(shù)據(jù)庫(kù)的名稱不區(qū)分大小寫(xiě),且以第一次建立時(shí)的名字為準(zhǔn)。 但需要注意的是: E:\test.db 會(huì)報(bào)錯(cuò),因?yàn)榫幾g器會(huì)識(shí)別到 \t 為制表符,因此認(rèn)為路徑不對(duì)。

方法二:

            
              	con
              
                =
              
              sqlite3
              
                .
              
              connect
              
                (
              
              
                "Test.db"
              
              
                )
              
            
          

??不加全路徑時(shí),數(shù)據(jù)庫(kù)文件會(huì)自動(dòng)建立在工程項(xiàng)目文件夾下。

2.2、在內(nèi)存上建立數(shù)據(jù)庫(kù)

            
              	con
              
                =
              
              sqlite3
              
                .
              
              connect
              
                (
              
              
                "memory"
              
              
                )
              
            
          

3、創(chuàng)建游標(biāo)

??游標(biāo)對(duì)象有以下方法支持?jǐn)?shù)據(jù)庫(kù)操作:

方法 描述
.execute() 用來(lái)執(zhí)行sql語(yǔ)句
.executemany() 用來(lái)執(zhí)行多條sql語(yǔ)句
.close() 用來(lái)關(guān)閉游標(biāo)
.fetchone() 用來(lái)從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄
.fetchmany() 用來(lái)從結(jié)果中取多條記錄。
.fetchall() 用來(lái)從結(jié)果中取出所以記錄。
.scroll() 用于游標(biāo)滾動(dòng)。

??創(chuàng)建游標(biāo)示例:

            
              	cur
              
                =
              
              con
              
                .
              
              cursor
              
                (
              
              
                )
              
            
          

4、執(zhí)行SQL語(yǔ)句

4.1、創(chuàng)建表

示例中所有的大寫(xiě)字符為SQL語(yǔ)法標(biāo)準(zhǔn),小寫(xiě)字符為用戶自定義的字符,但由于SQL語(yǔ)句不區(qū)分大小寫(xiě),所以將SQL標(biāo)準(zhǔn)語(yǔ)句小寫(xiě)也可以。

方法一:

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)"
              
              
                )
              
            
          

方法二:

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "CREATE TABLE test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)"
              
              
                )
              
            
          

??注意: 如果使用方法二(不加 IF NOT EXISTS ),當(dāng)項(xiàng)目中存在相同的表時(shí)會(huì)報(bào)錯(cuò),所以為了省略檢查表是否已建立的過(guò)程,建議使用方法一。

4.2、新增數(shù)據(jù)

方法一

            
              	data 
              
                =
              
              
                "5,'leon',22"
              
              
	cur
              
                .
              
              execute
              
                (
              
              
                'INSERT INTO test VALUES (%s)'
              
              
                %
              
              data
              
                )
              
            
          

方法二

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "INSERT INTO test values(?,?,?)"
              
              
                ,
              
              
                (
              
              
                6
              
              
                ,
              
              
                "zgq"
              
              
                ,
              
              
                20
              
              
                )
              
              
                )
              
            
          

方法三

            
              	cur
              
                .
              
              executemany
              
                (
              
              
                'INSERT INTO test VALUES (?,?,?)'
              
              
                ,
              
              
                [
              
              
                (
              
              
                3
              
              
                ,
              
              
                'name3'
              
              
                ,
              
              
                19
              
              
                )
              
              
                ,
              
              
                (
              
              
                4
              
              
                ,
              
              
                'name4'
              
              
                ,
              
              
                26
              
              
                )
              
              
                ]
              
              
                )
              
            
          

4.2、更新數(shù)據(jù)

方法一:

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "UPDATE test SET name=? WHERE id=?"
              
              
                ,
              
              
                (
              
              
                "nihao"
              
              
                ,
              
              
                1
              
              
                )
              
              
                )
              
            
          

方法二:

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "UPDATE test SET name='haha' WHERE id=1"
              
              
                )
              
            
          

4.3、刪除數(shù)據(jù)

方法一:

            
              	n
              
                =
              
              cur
              
                .
              
              execute
              
                (
              
              
                "DELETE FROM test WHERE id=?"
              
              
                ,
              
              
                (
              
              
                1
              
              
                ,
              
              
                )
              
              
                )
              
            
          

方法二:

            
              	n
              
                =
              
              cur
              
                .
              
              execute
              
                (
              
              
                "DELETE FROM test WHERE id=2"
              
              
                )
              
            
          

??返回的n為游標(biāo)對(duì)象

4.4、查詢數(shù)據(jù)

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "SELECT * FROM test"
              
              
                )
              
            
          

??查詢的結(jié)果存儲(chǔ)在游標(biāo)對(duì)象cur中,可以使用對(duì)象的方法進(jìn)行訪問(wèn)。

4.5、刪除表

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "DROP TABLE Test "
              
              
                )
              
            
          

5、查詢并顯示數(shù)據(jù)

5.1、全部顯示

            
              	cur
              
                .
              
              execute
              
                (
              
              
                "select * from Test"
              
              
                )
              
              
                for
              
               item 
              
                in
              
               cur
              
                :
              
              
                print
              
              
                (
              
              item
              
                )
              
            
          

            
              
                print
              
              
                (
              
              cur
              
                .
              
              fetchall
              
                (
              
              
                )
              
              
                )
              
            
          

5.2、顯示一條

            
              
                print
              
              
                (
              
              cur
              
                .
              
              fetchone
              
                (
              
              
                )
              
              
                )
              
            
          

5.2、顯示多條

            
              
                print
              
              
                (
              
              cur
              
                .
              
              fetchmany
              
                (
              
              
                3
              
              
                )
              
              
                )
              
            
          

注意:使用游標(biāo)的方法返回的數(shù)據(jù)類型是列表。

6、事務(wù)提交或回滾

6.1、提交

            
              	con
              
                .
              
              commit
              
                (
              
              
                )
              
            
          

6.2、回滾

            
              	con
              
                .
              
              rollback
              
                (
              
              
                )
              
            
          

7、關(guān)閉數(shù)據(jù)庫(kù)連接和游標(biāo)

            
              	cur
              
                .
              
              close
              
                (
              
              
                )
              
              
	con
              
                .
              
              close
              
                (
              
              
                )
              
            
          

??注意: 一定要先關(guān)閉游標(biāo),再關(guān)閉數(shù)據(jù)庫(kù)連接,否則會(huì)報(bào)錯(cuò)!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論