Esempio n. 1
0
    def update(self):
        """
        如果该行的字段属性有 updatable,代表该字段可以被更新
        用于定义的表(继承Model的类)是一个 Dict对象,键值会变成实例的属性
        所以可以通过属性来判断 用户是否定义了该字段的值
            如果有属性, 就使用用户传入的值
            如果无属性, 则调用字段对象的 default属性传入
            具体见 Field类 的 default 属性

        通过的db对象的update接口执行SQL
            SQL: update `user` set `passwd`=%s,`last_modified`=%s,`name`=%s where id=%s,
                 ARGS: (u'******', 1441878476.202391, u'Michael', 10190
        """
        self.pre_update and self.pre_update()
        L = []
        args = []
        for k, v in self.__mappings__.iteritems():
            if v.updatable:
                if hasattr(self, k):
                    arg = getattr(self, k)
                else:
                    arg = v.default
                    setattr(self, k, arg)
                L.append('`%s`=?' % k)
                args.append(arg)
        pk = self.__primary_key__.name
        args.append(getattr(self, pk))
        dbHandler.update('update `%s` set %s where %s=?' % (self.__table__, ','.join(L), pk), *args)
        return self
Esempio n. 2
0
 def delete(self):
     """
     通过db对象的 update接口 执行SQL
         SQL: delete from `user` where `id`=%s, ARGS: (10190,)
     """
     self.pre_delete and self.pre_delete()
     pk = self.__primary_key__.name
     args = (getattr(self, pk),)
     dbHandler.update('delete from `%s` where `%s`=?' % (self.__table__, pk), *args)
     return self
Esempio n. 3
0

class BlobField(Field):
    """
    保存Blob类型字段的属性
    """
    def __init__(self, **kw):
        if 'default' not in kw:
            kw['default'] = ''
        if 'ddl' not in kw:
            kw['ddl'] = 'blob'
        super(BlobField, self).__init__(**kw)


class VersionField(Field):
    """
    保存Version类型字段的属性
    """
    def __init__(self, name=None):
        super(VersionField, self).__init__(name=name, default=0, ddl='bigint')




if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)
    dbHandler.create_engine('root', '123456', 'test', '127.0.0.1')
    dbHandler.update('drop table if exists user')
    dbHandler.update('create table user (id int primary key, name text, email text, passwd text, last_modified real)')
    import doctest
    doctest.testmod()