def _select_sql_statement(cls, keys = None): sql = "select " sql += cls.all_fields_sql(field_substitution=True) sql += " from " + cls.TABLE_NAME if keys: extra_sql = " and ".join(["%s = %s" % (key_name, DB.dbstr(key_value)) for key_name,key_value in keys.iteritems()]) if extra_sql != "": sql += " where " + extra_sql return sql
def selectAllByKeys(cls, keys, order_by = None, offset = None, limit = None): for key_name in keys.keys(): if key_name not in cls.FIELDS: return None sql = "select " sql += cls.all_fields_sql(field_substitution=True) sql += " from " + cls.TABLE_NAME sql += " where " sql_clauses = [] for k,v in keys.items(): # null or not null if v: sql_value = " = " + str(DB.dbstr(v)) else: sql_value = " is NULL " sql_clauses.append(k + sql_value) sql += " and ".join(sql_clauses) if order_by: sql += " order by " + order_by # add offset and limit if offset: sql += " offset " + offset if limit: sql += " limit " + limit rows = DB.multirow(sql) if rows == None: return None return cls.multirow_to_array(rows)