你如果需要乙個簡單的儲存方案,那麼,python中shelve模板可以滿足你的。
shelve唯一有趣的函式open,呼叫的時候返回乙個shelf物件,你可以用它來儲存物件。只需要把她當做字典來使用就可以了。但是一定注意:鍵一定是字串。所以如果你的鍵是數字,建議轉換一些。
int---->str 函式str。例如,將123轉換成『123』,只需要str(123)就成了。
還有乙個問題,就是shelve.open 返回的物件,乙個例子如下:
c 不在??
當你在shelve物件中查詢元素的時候,這個物件會根據已經儲存的版本進行重新構建,當你將某個元素賦值給某乙個鍵的時候,它就被儲存了。所以我們看到了,a,b
我們可以這樣來避免這個問題:
temp=s['x']
s['x']=temp
s['x']
或者,在python2.4之後,有乙個解決辦法:將open函式的writebace引數設定為true。這樣,所有從shelf讀取的或賦值的都會儲存在記憶體中,並且只有關閉shelf的時候才寫回磁碟。
下面是乙個簡單的資料庫應用。
#!/usr/bin/env python
import pdb
import sys,shelve
pdb.set_trace()
def store_people(db,id):
print 'now you are go to store information of one person'
person = {}
person['name'] = raw_input("please input name:")
person['age'] = raw_input("please input age:")
person['phone'] = raw_input("please input phone:")
#max = id;
db[str(id)] = person
def look_up(db,max):
flag = 0
print 'you are go to look up the database'
field = raw_input('please input the name you are go to look up:')
field = field.strip().lower()
for i in range(1000,max):
if db[str(i)]['name'] == field:
print '---------------------'
print 'pid:%d'% i
print 'name:%s'% db[str(i)]['name']
print 'age:%s'% db[str(i)]['age']
print 'phone:%s'% db[str(i)]['phone']
print '---------------------'
flag = 1
if flag == 0:
print 'no data found'
def enter_cmd():
cmd = raw_input("enter cmd(store or look):")
cmd = cmd.strip().lower()
return cmd
def main():
pid = 1000
max = pid
database = shelve.open('g:\\python\database.dat')
try:
while true:
cmd = enter_cmd()
if cmd == 'store':
store_people(database,pid)
pid = pid + 1
max = pid
print '%d'% pid
print '%d'% max
elif cmd == 'look':
look_up(database,max) #look_up(database,1003)
elif cmd == 'q':
return
finally:
database.close()
if __name__ == '__main__':
main()
書上說,shelve寫入的資料是可以儲存的,我上面的發現卻不能查詢以前儲存的資料。納悶了,於是乎知道了,這個需要你去指定id查詢才行,而我是根據name去查詢的。剛開始一執行,max,pid的值都是不曉得的。所以也就不成功了。
我上面的look_up寫成紅色的,就能按照名字查詢了。
**仿造python基礎教程
python shelve模組的使用及注意點
shelve是python中一種儲存結構化資料的模組,用法跟字典相似,以鍵值對的形式儲存。基本使用方法 1.引入模組 import shelve2.建立資料檔案 with shelve.open filename as object object shelve.open filename 兩種檔案操...
程式設計,還是程式設計
喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...
少兒程式設計程式設計
機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...