22 Python指令碼學習筆記二十二資料庫支援

2021-08-10 16:22:38 字數 3247 閱讀 5947

22. python指令碼學習筆記二十二資料庫支援

本篇名言:「如果你周圍是一群鷹的話,那麼你自己也會成為乙隻鷹;如果是在一群山雀中間的話,那麼你就看不到海闊天空。」

在python指令碼上,我們居然一步一步的走了那麼遠了,實在不易啊~。「千里之行,始於腳下」。繼續書寫新的篇章~

我們來看下簡單資料庫sqlite使用。

python為解決各種資料庫模組間的相容問題,現在已經通過了乙個標準的db api。

任何支援db api的資料庫模組都必須定義3個描述模組特性的全域性變數。

apilevel可以是1.0或者2.0

threadsafety可以是0~3.0表示先出完全不共享模組,3表示模組是完全執行緒安全的,1表示執行緒本身可以共享模組。

paramstyle表示執行多次類似查詢的時候,引數是如何被拼接到sql查詢中的。

異常類可以盡可能準確的處理錯誤。我們看看dbapi使用的異常。如下:

連線函式connect,該函式有多個引數,具體使用取決於資料庫。引數含義如下:

connect函式返回連線物件,連線物件支援如下的方法:

2.1游標物件cursor

此外游標物件還具有一些特性如下表:

資料庫對插入到具有某種型別的列中的值有不同的要求,為了能正確基礎sql資料庫進行互動操作,db api定義了用於特殊型別和值的建構函式及常量。當前db api提供的建構函式和特殊值如下:

sqlite 優勢在已經被包括在標準庫內。可以直接拿來使用。

import

sqlite3

conn=sqlite3.connect(

'somedatabase.db')

curs=conn.cursor()

從檔案中導數資料到資料庫如下:

import

sqlite3

defconvert(value): if

value.startswith(

'~'):

return

value.strip(

'~') if

notvalue:

value =

'0'return

float(value)

conn = sqlite3.connect(

'food.db')

curs = conn.cursor()

curs.execute(

'drop table food')

curs.execute(

'''create table food (

id        text       primary key,

desc       text,

water     float,

kcal       float,

protein   float,

fat       float,

ash       float,

carbs     float,

fiber     float,

sugar     float

)''')

query =

'insert into food values (?,?,?,?,?,?,?,?,?,?)'

forline

inopen(

'data.txt'):

fields = line.split(

'^')

vals = [convert(f)

forf

infields]

curs.execute(query, vals)

conn.commit()

conn.close()

其中data.txt內容如下,隨便寫的

~1~^~ok~^10^100^20^1^2^2^3^7

~2~^~1ok`^10^30^20^1^2^2^4^8

~3~^~2ok`^10^5^20^1^2^2^5^9

~4~^~o3k~^10^7^10^10^12^21^2^10

匯入完畢,我們嘗試查詢

import

sqlite3, sys

conn = sqlite3.connect(

'food.db')

curs = conn.cursor()

query =

'select * from food where water==10'

print

query

curs.execute(query)

names = [f[0]

forf

incurs.description]

forrow

incurs.fetchall():

forpair

inzip(names, row):

print

'%s: %s'

%pair

print

最後輸出如下:

select* from food where water==10

id: 1

desc:ok

water:10.0

kcal:100.0

protein:20.0

fat:1.0

ash:2.0

carbs:2.0

fiber:3.0

sugar:7.0

id: 2

desc:1ok`

water:10.0

kcal:30.0

protein:20.0

fat:1.0

ash:2.0

carbs:2.0

fiber:4.0

sugar:8.0

id: 3

desc:2ok`

water:10.0

kcal:5.0

protein:20.0

fat:1.0

ash:2.0

carbs:2.0

fiber:5.0

sugar:9.0

id: 4

desc:o3k

water:10.0

kcal:7.0

protein:10.0

fat:10.0

ash:12.0

carbs:21.0

fiber:2.0

sugar:10.0

22 Python基礎學習筆記1

練習題 1.簡述編譯型與解釋型語言的區別,且分別列出你知道的哪些語言屬於編譯型,哪些屬於解釋型 編譯型語言 就好比一本教科書,不管用到哪乙個知識點,編譯型語言首先做的就是先將整本書所涉及的知識點都解釋一遍。比如輸入一串命令,先標準輸入,然後根據編譯環境去找到翻譯內容,傳給計算機,最後cpu處理 解釋...

2017 11 19以及22Python 學習筆記

迴圈語句 for i in range 執行的次數 比如 for i in range 10 迴圈十次 簡單的溫度轉換程式 tempconvert.py val input 請輸入帶溫度表示符號的溫度值 例如 32c if val 1 in c c f 1.8 float val 0 1 32 pr...

22 python資料序列(集合)

說實話,我也不知道該如何引入集合這個概念。在我沒有學習python之前,集合在我的腦海裡一直是乙個數學概念,對比與python當中的集合其實也差不了多少。總而言之,記住集合的特點就行,一方面其物理結構與邏輯結構不一致,他是無序的,另一方面,集合具有去重功能 兩種方式建立乙個集合,第一種是運用 第二種...