日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python sqlite数据库_用Python进行SQLite数据库操作

發(fā)布時間:2023/12/10 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python sqlite数据库_用Python进行SQLite数据库操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單的介紹

SQLite數(shù)據(jù)庫是一款非常小巧的嵌入式開源數(shù)據(jù)庫軟件,也就是說沒有獨立的維護進程,所有的維護都來自于程序本身。它是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月. 至今已經(jīng)有10個年頭,SQLite也迎來了一個版本 SQLite 3已經(jīng)發(fā)布。

安裝與使用

1.導入Python SQLITE數(shù)據(jù)庫模塊

Python2.5之后,內(nèi)置了SQLite3,成為了內(nèi)置模塊,這給我們省了安裝的功夫,只需導入即可~

import?sqlite3

2. 創(chuàng)建/打開數(shù)據(jù)庫

在調(diào)用connect函數(shù)的時候,指定庫名稱,如果指定的數(shù)據(jù)庫存在就直接打開這個數(shù)據(jù)庫,如果不存在就新創(chuàng)建一個再打開。

cx?=?sqlite3.connect("E:/test.db")

也可以創(chuàng)建數(shù)據(jù)庫在內(nèi)存中。

con?=?sqlite3.connect(":memory:")

3.數(shù)據(jù)庫連接對象

打開數(shù)據(jù)庫時返回的對象cx就是一個數(shù)據(jù)庫連接對象,它可以有以下操作:

commit()--事務(wù)提交

rollback()--事務(wù)回滾

close()--關(guān)閉一個數(shù)據(jù)庫連接

cursor()--創(chuàng)建一個游標

關(guān)于commit(),如果isolation_level隔離級別默認,那么每次對數(shù)據(jù)庫的操作,都需要使用該命令,你也可以設(shè)置isolation_level=None,這樣就變?yōu)樽詣犹峤荒J健?/p>

4.使用游標查詢數(shù)據(jù)庫

我們需要使用游標對象SQL語句查詢數(shù)據(jù)庫,獲得查詢對象。 通過以下方法來定義一個游標。

cu=cx.cursor()

游標對象有以下的操作:execute()--執(zhí)行sql語句

executemany--執(zhí)行多條sql語句

close()--關(guān)閉游標

fetchone()--從結(jié)果中取一條記錄,并將游標指向下一條記錄

fetchmany()--從結(jié)果中取多條記錄

fetchall()--從結(jié)果中取出所有記錄

scroll()--游標滾動

1. 建表

cu.execute("create?table?catalog?(id?integer?primary?key,pid?integer,name?varchar(10)?UNIQUE,nickname?text?NULL)")

上面語句創(chuàng)建了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不可以重復的,以及一個nickname默認為NULL。

2. 插入數(shù)據(jù)

請注意避免以下寫法:

#?Never?do?this?--?insecure?會導致注入攻擊

pid=200

c.execute("...?where?pid?=?'%s'"?%?pid)

正確的做法如下,如果t只是單個數(shù)值,也要采用t=(n,)的形式,因為元組是不可變的。

for?t?in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:

cx.execute("insert?into?catalog?values?(?,?,?,?)",?t)

簡單的插入兩行數(shù)據(jù),不過需要提醒的是,只有提交了之后,才能生效.我們使用數(shù)據(jù)庫連接對象cx來進行提交commit和回滾rollback操作.

cx.commit()

3.查詢

cu.execute("select?*?from?catalog")

要提取查詢到的數(shù)據(jù),使用游標的fetch函數(shù),如:

In?[10]:?cu.fetchall()

Out[10]:?[(0,?10,?u'abc',?u'Yu'),?(1,?20,?u'cba',?u'Xu')]

如果我們使用cu.fetchone(),則首先返回列表中的第一項,再次使用,則返回第二項,依次下去.

4.修改

In?[12]:?cu.execute("update?catalog?set?name='Boy'?where?id?=?0")

In?[13]:?cx.commit()

注意,修改數(shù)據(jù)以后提交

5.刪除

cu.execute("delete?from?catalog?where?id?=?1")

cx.commit()

6.使用中文

請先確定你的IDE或者系統(tǒng)默認編碼是utf-8,并且在中文前加上u

x=u'魚'

cu.execute("update?catalog?set?name=??where?id?=?0",x)

cu.execute("select?*?from?catalog")

cu.fetchall()

[(0,?10,?u'\u9c7c',?u'Yu'),?(1,?20,?u'cba',?u'Xu')]

如果要顯示出中文字體,那需要依次打印出每個字符串

In?[26]:?for?item?in?cu.fetchall():

....:?????for?element?in?item:

....:?????????print?element,

....:?????print

....:

0?10?魚?Yu

1?20?cba?Xu

總結(jié)

以上是生活随笔為你收集整理的python sqlite数据库_用Python进行SQLite数据库操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。