コード例 #1
0
ファイル: MongoBuilder.py プロジェクト: cofepy/torm
 def FindMany(self, *args, **kwargs):
     where = parse_args(args, kwargs)
     table = self.connection.table(self)
     items = table.find(where)
     if not items:
         return []
     items = [Map(decode_id(item)) for item in items]
     return items
コード例 #2
0
ファイル: MysqlBuilder.py プロジェクト: cofepy/torm
 def FindMany(self, *args, **kwargs):
     self.reset()
     where = parse_args(args, kwargs, _depth=4)
     items = self.where(where).get()
     if not items:
         return None
     items = [Map(item) for item in items]
     return items
コード例 #3
0
ファイル: MysqlBuilder.py プロジェクト: cofepy/torm
 def all(self):
     sql = self._compile_select()
     try:
         result = self.connection.execute(sql, DictCursor)
     except Exception as e:
         print(sql)
         raise e
     return [Map(index) for index in result]
コード例 #4
0
ファイル: MysqlBuilder.py プロジェクト: cofepy/torm
 def FindOne(self, *args, **kwargs):
     self.reset()
     where = parse_args(args, kwargs, _depth=4)
     items = self.where(where).limit(1).get()
     if not items:
         return None
     item = Map(items[0])
     item = self.model(item)
     return item
コード例 #5
0
ファイル: MongoBuilder.py プロジェクト: cofepy/torm
    def FindOne(self, *args, **kwargs):
        where = parse_args(args, kwargs, _depth=4)

        table = self.connection.table(self)

        item = table.find_one(where)
        if not item:
            return None

        # 将字典转成Model
        item = Map(decode_id(item))
        return item
コード例 #6
0
ファイル: MysqlBuilder.py プロジェクト: cofepy/torm
def parse_args(args, kwargs, _depth=3):
    where = {}

    for arg in args:
        if type(arg) in [dict, set, Map]:
            arg = Map(arg, _depth=_depth)
            where.update(arg)
        elif type(arg) == str:
            key = get_var_name(arg, _depth=_depth)
            where[key] = arg

    where.update(kwargs)
    return where
コード例 #7
0
ファイル: MongoBuilder.py プロジェクト: cofepy/torm
def parse_args(args, kwargs, _depth=3):
    where = {}

    for arg in args:
        if type(arg) in [dict, set]:
            arg = Map(arg, _depth=_depth)
            arg = encode_id(arg)
            where.update(arg)
        elif type(arg) == str:
            key = get_var_name(arg, _depth=_depth)
            if key == "id":
                where["_id"] = ObjectId(str(arg))
            else:
                where[key] = arg

    kwargs = encode_id(kwargs)

    where.update(kwargs)
    return where
コード例 #8
0
ファイル: MongoBuilder.py プロジェクト: cofepy/torm
    def UpdateOne(self, where={}, item={}):

        if not where:
            return None
        where = Map(where, _depth=4)
        where = encode_id(where)

        if not item:
            return None

        if isinstance(item, self.__class__):
            item = item.to_dict()

        # 禁止更新id,_id字段
        if "id" in item:
            item.pop("id")
        if "_id" in item:
            item.pop("_id")

        table = self.connection.table(self)
        r = table.update_one(where, {"$set": item})
        return r
コード例 #9
0
ファイル: MysqlBuilder.py プロジェクト: cofepy/torm
    def UpdateOne(self, where={}, item={}):
        self.reset()

        if not where:
            return None
        if not item:
            return None
        where = Map(where, _depth=4)

        if isinstance(item, self.__class__):
            item = item.to_dict()

        # 禁止更新id字段
        if "id" in item:
            item.pop("id")

        # 先查找第一个,然后更新
        _item = self.FindOne(where)
        if _item:
            return self.where({'id': _item.id}).update(item)
        else:
            return None
コード例 #10
0
ファイル: MongoBuilder.py プロジェクト: cofepy/torm
 def get(self):
     d = self.connection.get(self)
     self.reset()
     return [Map(index) for index in d]