Example #1
0
 def do_select(klass, conn, id = None, _orderby = None, _limit = None, **kw):
     """Heavy lifting for select methods"""
     sql = "select * from %s" %(klass.TABLE)
     args = []
     if id != None or kw != {}:
         sql += " where "
     if kw:
         if id != None:
             kw['id'] = id
         where_sql, args = utils.encode_where(kw)
         sql += where_sql
     elif id != None:
         sql += " id = %s"
         args = [id]
     if _orderby:
         if type(_orderby) == str:
             _orderby = [_orderby]
         for orderterm in _orderby:
             if orderterm.lstrip('-') not in (klass.FIELDS + klass.SYSTEM_FIELDS):
                 raise InvalidFieldError("Invalid sort order", orderterm)
         sql += ' ORDER BY ' + ','.join([ ("%s DESC" % (x[1:]) if x[0] == '-' else x) for x in _orderby])
     if _limit:
         if isinstance(_limit, tuple):
             sql += " LIMIT %d" %(int(_limit[0]))
             sql += " OFFSET %d" %(int(_limit[1]))
         else:
             sql += " LIMIT %d" %(int(_limit))
     c = conn.cursor(cursor_factory = DictCursor)
     c.execute(sql, args)
     return c
Example #2
0
 def count(klass, conn, **kw):
     sql = "select count(*) from " + klass.TABLE 
     if kw:
         where, values = utils.encode_where(kw)
         sql +=  " WHERE " + where
     else:
         values = kw
     with closing(conn.cursor()) as c:
         c.execute(sql, values)
         row = c.fetchone()
         return row[0]