Esempio n. 1
0
 async def visit_order_by(self, query):
     key = query._expr.value
     table, field = key.split(".") if "." in key else (self.sql, key)
     if type(table) == str:
         table = Tables(table)[0]
     self.sql_stack.append(lambda x: x.orderby(table.__getattr__(field)))
     await self.visit(query.child)
Esempio n. 2
0
 async def visit_where(self, query):
     # TODO: more general lazy expression evaluator
     left, op, right = query._expr.value.split()
     right = ast.literal_eval(right)
     table, field = left.split(".") if "." in left else (self.sql, left)
     if type(table) == str:
         table = Tables(table)[0]
     binary_op = _cmp_ops_dict[op]
     self.sql_stack.append(
         lambda x: x.where(binary_op(table.__getattr__(field), right)))
     await self.visit(query.child)