示例#1
0
 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")
示例#2
0
 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
示例#3
0
 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")
示例#4
0
 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")
示例#5
0
 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")
示例#6
0
 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")
示例#7
0
 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")
示例#8
0
    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")
示例#9
0
 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
示例#10
0
 def __rand__(self, cond):
     if self._has_value:
         cond._q._sub_conds.append((self, ' AND '))
         return cond
     raise database.OperationalError("Operation with no value")
示例#11
0
 def __and__(self, cond):
     if self._has_value:
         self._sub_conds.append((cond, " AND "))
         return self
     raise database.OperationalError("Operation with no value")