欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 如何操作 SQLite 數(shù)據(jù)庫(kù)

 更新時(shí)間:2020年08月17日 10:34:17   作者:Rocky0429  
這篇文章主要介紹了Python 如何操作 SQLite 數(shù)據(jù)庫(kù),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

寫在之前

SQLite 是一個(gè)小型的關(guān)系型數(shù)據(jù)庫(kù),它最大的特點(diǎn)在于不需要單獨(dú)的服務(wù)、零配置。我們?cè)谥爸v過(guò)的兩個(gè)數(shù)據(jù)庫(kù),不管是 MySQL 還是 MongoDB,都需要我們安裝。安裝之后,然后運(yùn)行起來(lái),其實(shí)這就相當(dāng)于已經(jīng)有一個(gè)相應(yīng)的服務(wù)在跑著。

SQLite 與前面所說(shuō)的兩個(gè)數(shù)據(jù)庫(kù)不同。首先Python 已經(jīng)將相應(yīng)的驅(qū)動(dòng)模塊作為了標(biāo)準(zhǔn)庫(kù)的一部分,只要是你安裝了 Python,就可以使用;再者它可以類似于操作文件那樣來(lái)操作 SQLite 數(shù)據(jù)庫(kù)文件。還有一點(diǎn),SQLite 源代碼不受版權(quán)限制。

建立連接

SQLite 也是一個(gè)關(guān)系型數(shù)據(jù)庫(kù),所以 SQL 可以直接在里面使用。由于 SQLite 的驅(qū)動(dòng)已經(jīng)在 Python 里面了,所以只要引用就可以直接使用,由于我們之前已經(jīng)講過(guò) MySQL 了,所以對(duì)于本次內(nèi)容理解起來(lái)就容易多了。

>>> import sqlite3
>>> conn = sqlite3.connect('lite.db')

由上面的代碼我們得到了連接對(duì)象,是不是覺(jué)得比 MySQL 連接要簡(jiǎn)單很多呢?在 sqlite3.connect('lite.db') 中,如果已經(jīng)有了那個(gè)數(shù)據(jù)庫(kù),就直接連接它,如果沒(méi)有的話,就會(huì)自動(dòng)建一個(gè)。需要注意的是,這里的路徑是可以隨意指定的。

下面的代碼顯示的是連接對(duì)象的屬性和方法:

>>> dir(conn)
['DataError', 'DatabaseError', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'Warning', '__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'commit', 'create_aggregate', 'create_collation', 'create_function', 'cursor', 'execute', 'executemany', 'executescript', 'in_transaction', 'interrupt', 'isolation_level', 'iterdump', 'rollback', 'row_factory', 'set_authorizer', 'set_progress_handler', 'set_trace_callback', 'text_factory', 'total_changes']

建立游標(biāo)

這一步其實(shí)跟 MySQL 也很類似,連接了數(shù)據(jù)庫(kù)之后,要建立游標(biāo)對(duì)象:

>>> cur = conn.cursor()

接下來(lái)就是對(duì)數(shù)據(jù)庫(kù)內(nèi)容的操作,都是用游標(biāo)對(duì)象方法來(lái)實(shí)現(xiàn):

>>> dir(cur)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'arraysize', 'close', 'connection', 'description', 'execute', 'executemany', 'executescript', 'fetchall', 'fetchmany', 'fetchone', 'lastrowid', 'row_factory', 'rowcount', 'setinputsizes', 'setoutputsize']

我們?cè)诶锩婵吹搅艘幌盗形覀兪煜さ拿Q:close()、execute()、fetchall() 等。

1.創(chuàng)建數(shù)據(jù)庫(kù)表

面對(duì) SQLite 數(shù)據(jù)庫(kù),我們之前熟悉的 SQL 指令都可以用:

>>> create_table = "create table books (title,author,language)"
>>> cur.execute(create_table)
<sqlite3.Cursor object at 0x104f296c0>

這樣就在數(shù)據(jù)庫(kù) lite.db 中建立了一個(gè)表 books。對(duì)這個(gè)表可以增加數(shù)據(jù):

>>> cur.execute('insert into books values("python basic","rocky","python")')
<sqlite3.Cursor object at 0x104f296c0>

為了保證數(shù)據(jù)能夠保存,還要進(jìn)行如下操作:

>>> conn.commit()
>>> cur.close()
>>> conn.close()

以上,在剛才建立的數(shù)據(jù)庫(kù)中已經(jīng)有了一個(gè)表 books,表中已經(jīng)有了一條記錄。

2.查詢

保存以后我們來(lái)查詢一下:

>>> conn = sqlite3.connect('lite.db')
>>> cur = conn.cursor()
>>> cur.execute('select * from books')
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic', 'rocky', 'python')]

3.批量插入

我們來(lái)給 books 表中多增加一些內(nèi)容,以便于我們進(jìn)行其它的操作:

>>> books = [("first book","first","c"),("second book","second","c++"),("third book","third","java")]

這次我們來(lái)一個(gè)批量插入:

>>> cur.executemany('insert into books values (?,?,?)',books)
<sqlite3.Cursor object at 0x104f297a0>
>>> conn.commit()

接下來(lái)我們用循環(huán)語(yǔ)句來(lái)打印一下查詢結(jié)果:

>>> rows = cur.execute('select * from books')
>>> for row in rows:
... print(row)
... 
('python basic', 'rocky', 'python')
('first book', 'first', 'c')
('second book', 'second', 'c++')
('third book', 'third', 'java')

4.更新

正如我們前面所說(shuō)的,在 cur.execute() 中,可以寫 SQL 語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù):

>>> cur.execute("update books set title='physics' where author='first'")
<sqlite3.Cursor object at 0x104f297a0>
>>> conn.commit()

接下來(lái)我們按照條件查詢來(lái)看一看:

>>> cur.execute("select * from books where author='first'")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()


[('physics', 'first', 'c')]

5.刪除

刪除也是操作數(shù)據(jù)庫(kù)必須的動(dòng)作:

>>> cur.execute("select * from books")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic', 'rocky', 'python'), ('physics', 'first', 'c'), ('third book', 'third', 'java')]

最后不要忘記在完成對(duì)數(shù)據(jù)庫(kù)的操作以后,一定記得給人家「關(guān)上門」:

>>> cur.close()
>>> conn.close()

寫在之后

基本的知識(shí)差不多就是這些,當(dāng)然肯定不局限于此。在實(shí)際的編程中我們肯定會(huì)遇到很多的問(wèn)題,大家記得要多多去查閱官方文檔,學(xué)會(huì)解決問(wèn)題。

至此,Python 操作數(shù)據(jù)這一部分就結(jié)束了,其實(shí)不光是這一個(gè)章節(jié)的結(jié)束,我計(jì)劃里面的整個(gè)「零基礎(chǔ)入門學(xué)習(xí) Python」這個(gè)系列也到此結(jié)束了,后續(xù)隨著我碰到的知識(shí)的增加,還會(huì)再給大家更新關(guān)于 Python 方面的東西,讓我們一起加油。

如果你覺(jué)得本篇文章對(duì)你有所幫助的話,歡迎點(diǎn)贊 + 關(guān)注,期待和你的交流。

The end。

以上就是Python 如何操作 SQLite 數(shù)據(jù)庫(kù)的詳細(xì)內(nèi)容,更多關(guān)于python操作 SQLite 數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pyscript的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)

    pyscript的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)

    本文主要介紹了pyscript的簡(jiǎn)單應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python中hash加密簡(jiǎn)介及使用方法

    Python中hash加密簡(jiǎn)介及使用方法

    常見(jiàn) Hash 算法有 MD5 和 SHA 系列,目前 MD5 和 SHA1 已經(jīng)被破解,一般推薦至少使用 SHA2-256 算法,接下來(lái)通過(guò)本文給大家介紹Python中hash加密簡(jiǎn)介及使用方法,感興趣的朋友一起看看吧
    2022-01-01
  • 使用python繪制3維正態(tài)分布圖的方法

    使用python繪制3維正態(tài)分布圖的方法

    今天小編就為大家分享一篇使用python繪制3維正態(tài)分布圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Anaconda入門使用總結(jié)

    Anaconda入門使用總結(jié)

    個(gè)人嘗試了很多類似的發(fā)行版,最終選擇了Anaconda,因?yàn)槠鋸?qiáng)大而方便的包管理與環(huán)境管理的功能。該文主要介紹下Anaconda,對(duì)Anaconda的理解,并簡(jiǎn)要總結(jié)下相關(guān)的操作
    2018-04-04
  • python FastApi實(shí)現(xiàn)數(shù)據(jù)表遷移流程詳解

    python FastApi實(shí)現(xiàn)數(shù)據(jù)表遷移流程詳解

    今天我們來(lái)聊一聊在FastApi里面,數(shù)據(jù)遷移工作,F(xiàn)astAPI是一個(gè)現(xiàn)代的,快速(高性能)python web框架。本文將利用fastapi實(shí)現(xiàn)數(shù)據(jù)表遷移功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-08-08
  • 將自己的Python包發(fā)布到PyPI上的教程詳解

    將自己的Python包發(fā)布到PyPI上的教程詳解

    在Python中我們經(jīng)常使用pip來(lái)安裝第三方Python軟件包,其實(shí)我們每個(gè)人都可以免費(fèi)地將自己寫的Python包發(fā)布到PyPI上,本文小編就來(lái)教教大家如何將自己的Python包發(fā)布到PyPI上吧
    2023-09-09
  • Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn)

    Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn)

    這篇文章主要介紹了Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)批量讀取圖片并存入mongodb數(shù)據(jù)庫(kù)的方法示例

    Python實(shí)現(xiàn)批量讀取圖片并存入mongodb數(shù)據(jù)庫(kù)的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)批量讀取圖片并存入mongodb數(shù)據(jù)庫(kù)的方法,涉及Python文件讀取及數(shù)據(jù)庫(kù)寫入相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • Python 用turtle實(shí)現(xiàn)用正方形畫圓的例子

    Python 用turtle實(shí)現(xiàn)用正方形畫圓的例子

    今天小編就為大家分享一篇Python 用turtle實(shí)現(xiàn)用正方形畫圓的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python3 常見(jiàn)解密加密算法實(shí)例分析【base64、MD5等】

    python3 常見(jiàn)解密加密算法實(shí)例分析【base64、MD5等】

    這篇文章主要介紹了python3 常見(jiàn)解密加密算法,結(jié)合實(shí)例形式分析了Python的base64模塊加密,以及基于pycrypto模塊的MD5加密等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12

最新評(píng)論