def _prepare(self, sql, value): if not self._has_value: self._sql = sql self._params.append(value) self._has_value = True return self raise database.OperationalError("Multiple operate onditions")
def group_by(self, *fields): if len(fields) < 1: raise database.OperationalError("must nave a field") # raise database.OperationalError, 'Must have a field' for f in fields: self._groups.append(f) return self
def __call__(self): _sql_slice = ['DELETE FROM `', self._table, '`'] if self._where: _sql_slice.append(' WHERE ') _sql_slice.append(self._where.get_sql()) _sql = ''.join(_sql_slice) return self._db.execute(_sql, *self._where.get_params()) raise database.OperationalError("Delete data must need some where")
def __call__(self, *fields, **kwargs): _params = [] _cols = [] if len(fields) < 1 and not kwargs: raise database.OperationalError("Update need some date") # raise database.OperationalError, 'Update Need some data' elif kwargs: for k in kwargs.keys(): if type(kwargs[k]).__name__ == 'unicode': cond = eval(''.join([ 'self._queryer.', k, "==u'''", kwargs[k].replace("'''", "\\'\\'\\'"), "'''" ])) elif type(kwargs[k]).__name__ == 'int' or type( kwargs[k]).__name__ == 'long': cond = eval(''.join( ['self._queryer.', k, "==u'''", str(kwargs[k]), "'''"])) elif type(kwargs[k]).__name__ == 'datetime': cond = eval(''.join( ['self._queryer.', k, "==u'", unicode(kwargs[k]), "'"])) else: cond = eval(''.join([ 'self._queryer.', k, "==u'", _unicode(kwargs[k]), "'" ])) _cols.append(cond.get_sql()) _params.append(cond.get_params()[0]) else: for f in fields: _cols.append(f.get_sql()) _params.append(f.get_params()[0]) _sql_slice = ['UPDATE `', self._table, '` SET ', ','.join(_cols)] if self._where: _sql_slice.append(' WHERE ') _sql_slice.append(self._where.get_sql()) for p in self._where.get_params(): _params.append(p) _sql = ''.join(_sql_slice) return self._db.execute(_sql, *_params) raise database.OperationalError("Update need where")
def __eq__(self, value): if not self._has_value: if value.__class__.__name__ == 'conds': self._sql = ''.join(['`', self._field, '`=', value.get_sql()]) self._params.append(value.get_params()[0]) else: self._sql = ''.join(['`', self._field, '`=%s']) self._params.append(value) self._has_value = True return self raise database.OperationalError("Multiple operate conditions")
def __getattr__(self, attr): if not self._has_value: if attr.__class__.__name__ == 'str': return self if attr.__class__.__name__ == 'Select': self._field = ''.join([ attr, '(t.', self._field, ') as ', attr, '_', self._field ]) else: self._field = ''.join( [attr, '(', self._field, ') as ', attr, '_', self._field]) return self raise database.OperationalError("Multiple Operate conditions")
def Not_In(self, array): ''' see In ''' if not self._has_value: if array.__class__.__name__ == "Select": self._sql = "".join( ["`", self._field, '`', ' not in (', array.get_sql(), ")"]) for p in array.get_params(): self._params.append(p) else: _values = ",".join( ["".join(['\'', str(i), '\'']) for i in array]) self._sql = "".join( ["`", self._field, '`', ' not in (', _values, ")"]) self._has_value = True return self raise database.OperationalError("Multiple operate conditions")
def In(self, array): ''' @param array: list or Select e.g: q = user(user.id.In([1,2,3,4,5])) ''' if not self._has_value: if array.__class__.__name__ == "Select": self._sql = "".join( ["`", self._field, '`', ' in (', array.get_sql(), ")"]) for p in array.get_params(): self._params.append(p) else: _values = ",".join( ["".join(["'", str(i), "'"]) for i in array]) self._sql = "".join( ["`", self._field, '`', ' in (', _values, ")"]) self._has_value = True return self raise database.OperationalError("Multiple operate conditions")
def object_list(self): if self._pid is None or self._psize is None: raise database.OperationalError("Must set Page pre num") # raise database.OperationalError, 'Must Set Page pre num' self._paginator = True self._limit = ''.join( ['LIMIT ', str(self._pid), ',', str(self._psize + 1)]) data = self.__call__() self._limit = ''.join( ['LIMIT ', str(self._pid), ',', str(self._psize)]) self._paginator = False if len(data) > self._psize: data = data[:-1] self._nextpage = self._curpage + 1 else: self._nextpage = None if self._curpage > 1: self._prevpage = self._curpage - 1 else: self._prevpage = None return data
def __rand__(self, cond): if self._has_value: cond._q._sub_conds.append((self, ' AND ')) return cond raise database.OperationalError("Operation with no value")
def __and__(self, cond): if self._has_value: self._sub_conds.append((cond, " AND ")) return self raise database.OperationalError("Operation with no value")