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

歡迎訪問 生活随笔!

生活随笔

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

python

python自带模块连接数据库_Python模块Sqlite数据库模块

發布時間:2025/4/16 python 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python自带模块连接数据库_Python模块Sqlite数据库模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python模塊Sqlite數據庫模塊簡介

從Python2.5以后的版本開始引入SQLite,屬于Python內置模塊,不需要額外安裝。Sqlite以小巧快捷著稱。SQLite第一個Alpha版本誕生于2000年5月. 至今已經有很多年了,SQLite也迎來了一個版本 SQLite 3已經發布。

Python模塊Sqlite數據庫模塊常用方法簡介

1. 創建/打開數據庫

在調用connect函數的時候,指定庫名稱,如果指定的數據庫存在就直接打開這個數據庫,如果不存在就創建數據庫再打開。

#在文件中創建數據庫

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

1

2

#在文件中創建數據庫

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

2.數據庫連接對象

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

commit()--事務提交

rollback()--事務回滾

close()--關閉一個數據庫連接

cursor()--創建一個游標

1

2

3

4

commit()--事務提交

rollback()--事務回滾

close()--關閉一個數據庫連接

cursor()--創建一個游標

關于commit(),如果isolation_level隔離級別默認,那么每次對數據庫的操作,都需要使用該命令,你也可以設置isolation_level=None,這樣就變為自動提交模式。

3.使用游標查詢數據庫

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

cu=cx.cursor()

1

cu=cx.cursor()

游標對象有以下的操作:

execute()--執行sql語句

executemany--執行多條sql語句

close()--關閉游標

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

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

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

scroll()--游標滾動

1

2

3

4

5

6

7

execute()--執行sql語句

executemany--執行多條sql語句

close()--關閉游標

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

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

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

scroll()--游標滾動

4. 建表

cu.execute(“create table table_py40 (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)”)

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

5. 插入數據

#請注意避免以下寫法:

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

pid=200

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

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

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

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

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

cx.commit()

1

2

3

4

5

6

7

8

9

10

11

#請注意避免以下寫法:

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

pid=200

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

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

fortin[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:

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

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

cx.commit()

6.查詢

cu.execute("select * from table_py40")

1

cu.execute("select * from table_py40")

要獲取查詢到的數據,使用游標的fetch函數,如:

In [10]: cu.fetchall()

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

1

2

In[10]:cu.fetchall()

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

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

7.修改

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

In [13]: cx.commit()

1

2

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

In[13]:cx.commit()

注意,修改數據以后commit提交

8.刪除

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

cx.commit()

1

2

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

cx.commit()

9.使用中文

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

x=u'魚'

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

cu.execute("select * from table_py40")

cu.fetchall()

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

1

2

3

4

5

x=u'魚'

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

cu.execute("select * from table_py40")

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

1

2

3

4

5

6

7

In[26]:foritemincu.fetchall():

....:forelementinitem:

....:printelement,

....:print

....:

010魚Yu

120cbaXu

總結

以上是生活随笔為你收集整理的python自带模块连接数据库_Python模块Sqlite数据库模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。