1 初探
在平時(shí)的開發(fā)工作中,我們可能會(huì)有這樣的需求:我們希望有一個(gè)內(nèi)存數(shù)據(jù)庫(kù)或者數(shù)據(jù)引擎,用比較Pythonic的方式進(jìn)行數(shù)據(jù)庫(kù)的操作(比如說插入和查詢)。
舉個(gè)具體的例子,分別向數(shù)據(jù)庫(kù)db中插入兩條數(shù)據(jù),"a=1, b=1" 和 "a=1, b=2", 然后想查詢a=1的數(shù)據(jù)可能會(huì)使用這樣的語(yǔ)句db.query(a=1),結(jié)果就是返回前面插入的兩條數(shù)據(jù); 如果想查詢a=1, b=2的數(shù)據(jù),就使用這樣的語(yǔ)句db.query(a=1, b=2),結(jié)果就返回前面的第二條數(shù)據(jù)。
那么是否擁有實(shí)現(xiàn)上述需求的現(xiàn)成的第三方庫(kù)呢?幾經(jīng)查找,發(fā)現(xiàn)PyDbLite能夠滿足這樣的需求。其實(shí),PyDbLite和Python自帶的SQLite均支持內(nèi)存數(shù)據(jù)庫(kù)模式,只是前者是Pythonic的用法,而后者則是典型的SQL用法。
他們具體的用法是這樣的:
PyDbLite
import pydblite# 使用內(nèi)存數(shù)據(jù)庫(kù)pydb = pydblite.Base(':memory:')# 創(chuàng)建a,b,c三個(gè)字段pydb.create('a', 'b', 'c')# 為字段a,b創(chuàng)建索引pydb.create_index('a', 'b')# 插入一條數(shù)據(jù)pydb.insert(a=-1, b=0, c=1)# 查詢符合特定要求的數(shù)據(jù)results = pydb(a=-1, b=0)
網(wǎng)友評(píng)論