the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


webpy中db模块的CRUD操作

作者:the5fire | 标签:   | 发布:2013-12-21 7:29 p.m. | 阅读量: 4736, 4697

这篇文章主要介绍下,如何通过webpy的db模块完成crud操作。一开始觉得webpy的db模块写的太绕了,现在仔细看了源代码之后,发现确实封装的过于多了点,把一个sql语句各种拆。相对于简单的sqlhelper来说——比如tornadb,这个东西复杂了点,对于ORM来说,这东西有简单了点。不过想起最早时我在写vb或者.net的时候自己写sqlhelper也有过此类的想法,把sql语句的各个部分都给封装起来。

关于某个工具或者类的解释,通过代码能表达得更加直观:

#coding:utf-8
import web

db = web.database(dbn='sqlite', db="todos.db")

class Todos(object):
    @staticmethod
    def get_by_id(id):
        itertodo = db.select('todos', where="id=$id", vars=locals())
        # 参考:https://groups.google.com/forum/#!msg/webpy/PP81l8C5kbQ/90Hgx3HUqG0J
        return next(iter(itertodo), None)

    @staticmethod
    def get_all():
        return db.select('todos')

    @staticmethod
    def create(**kwargs):
        db.insert('todos', **kwargs)

    @staticmethod
    def update(**kwargs):
        db.update('todos', where="id=$id", vars={"id": kwargs.pop('id')}, **kwargs)

    @staticmethod
    def delete(id):
        db.delete('todos', where="id=$id", vars=locals())

这其实是对todos进行服务器端扩展的一部分代码,完整代码可见这里: webpy-todos


----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡


其他分类: