原文:http://chenxiaoyu.org/blog/archives/226 官網(wǎng)地址:http://webpy.org/ web.py是一個小巧靈活的框架,最新穩(wěn)定版是0.33。這里不介紹web開發(fā)部分,介紹下關(guān)于數(shù)據(jù)庫的相關(guān)操作。 很多Pyer一開始都喜歡自己封裝數(shù)據(jù)庫操作類,本人亦如此。不過后來通過
原文:http://chenxiaoyu.org/blog/archives/226
官網(wǎng)地址:http://webpy.org/
web.py是一個小巧靈活的框架,最新穩(wěn)定版是0.33。這里不介紹web開發(fā)部分,介紹下關(guān)于數(shù)據(jù)庫的相關(guān)操作。
很多Pyer一開始都喜歡自己封裝數(shù)據(jù)庫操作類,本人亦如此。不過后來通過觀摩web.py的源碼,發(fā)現(xiàn)其數(shù)據(jù)庫操作部分相當(dāng)緊湊實用。推薦懶人可以嘗試一下。
廢話不多,先來安裝,有兩種方式:
1. easy_install方式,如果木有此工具,可以參考:http://chenxiaoyu.org/blog/archives/23
easy_install web.py
2. 下載源碼編譯。地址: http://webpy.org/static/web.py-0.33.tar.gz ,解壓后執(zhí)行:
python setup.py install
web.py安裝算到此結(jié)束,如果想使用其中的db功能,還得借助與相應(yīng)數(shù)據(jù)庫操作模塊,比如MySQLdb、psycopg2。如果需要嘗試連接池(database pool)功能,還得裝下DBUtils。這幾個模塊都可以通過easy_install來安裝。
下面開始使用吧!
1. 導(dǎo)入模塊,定義數(shù)據(jù)庫連接db。
import web db = web.database(dbn='postgres', db='mydata', user='dbuser', pw='')
2. select 查詢
# 查詢表 entries = db.select('mytable') # where 條件 myvar = dict(name="Bob") results = db.select('mytable', myvar, where="name = $name") results = db.select('mytable', where="id>100") # 查詢具體列 results = db.select('mytable', what="id,name") # order by results = db.select('mytable', order="post_date DESC") # group results = db.select('mytable', group="color") # limit results = db.select('mytable', limit=10) # offset results = db.select('mytable', offset=10)
3. 更新
db.update('mytable', where="id = 10", value1 = "foo")
4. 刪除
db.delete('mytable', where="id=10")
5. 復(fù)雜查詢
# count results = db.query("SELECT COUNT(*) AS total_users FROM users") print results[0].total_users # join results = db.query("SELECT * FROM entries JOIN users WHERE entries.author_id = users.id") # 防止SQL注入可以這么干 results = db.query("SELECT * FROM users WHERE id=$id", vars={'id':10})
6 多數(shù)據(jù)庫操作 (web.py大于0.3)
db1 = web.database(dbn='mysql', db='dbname1', user='foo') db2 = web.database(dbn='mysql', db='dbname2', user='foo') print db1.select('foo', where='id=1') print db2.select('bar', where='id=5')
7. 事務(wù)
t = db.transaction() try: db.insert('person', name='foo') db.insert('person', name='bar') except: t.rollback() raise else: t.commit() # Python 2.5+ 可以用with from __future__ import with_statement with db.transaction(): db.insert('person', name='foo') db.insert('person', name='bar')
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com