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'
query
curs.execute(query)
names = [f[0]
forf
incurs.description]
forrow
incurs.fetchall():
forpair
inzip(names, row):
'%s: %s'
%pair
最後輸出如下:
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當中的集合其實也差不了多少。總而言之,記住集合的特點就行,一方面其物理結構與邏輯結構不一致,他是無序的,另一方面,集合具有去重功能 兩種方式建立乙個集合,第一種是運用 第二種...