def compile(self, db): # // Start an insertion query query = 'INSERT INTO %s' % (db.quote_table(self._table)) # // Add the column names query = '%s (%s) ' % (query, ', '.join([db.quote_column(c) for c in self._columns])) if isinstance(self._values, (list, tuple)): # // Callback for quoting values # $quote = array($db, 'quote'); # groups = [] for group in self._values: offset = 0 for value in group: if isinstance(value, str) and not self._parameters.has_key(value): # // Quote the value, it is not a parameter group[offset] = db.quote(value) # offset += 1 groups.append('(%s)' % (', '.join(group))) # // Add the values query = '%s VALUES %s' % (query, ', '.join(groups)) else: # // Add the sub-query query = '%s %s' % (query, str( self._values)) self._sql = query return database_query_builder_where.compile(self, db)
def compile(self, db): # // Callback to quote columns # $quote_column = array($db, 'quote_column'); # # // Callback to quote tables # $quote_table = array($db, 'quote_table'); # # // Start a selection query query = 'SELECT ' if self._distinct: # // Select only unique results query = '%sDISTINCT ' % query if len(self._select) <= 0: # // Select all columns query = '%s*' % query else: # // Select all columns query = '%s%s' % (query, ', '.join( list( set ( [db.quote_column(x) for x in self._select] ) ) ) ) if len(self._from) > 0: query = '%s FROM %s' % (query, ', '.join( list( set ( [db.quote_table(x) for x in self._from] ) ) ) ) if len(self._join) > 0: query = '%s %s' % (query, self._compile_join(db, self._join)) if len(self._where) > 0: query = '%s WHERE %s' % (query, self._compile_conditions(db, self._where)) if len(self._group_by) > 0: query = '%s %s' % (query, self._compile_group_by(db, self._group_by)) if len(self._having) > 0: query = '%s HAVING %s' % (query, self._compile_conditions(db, self._having)) if len(self._order_by) > 0: query = '%s %s' % (query, self._compile_order_by(db, self._order_by)) if self._limit is not None: query = '%s LIMIT %s' % (query, self._limit) if self._offset is not None: query = '%s OFFSET %s' % (query, self._offset) if len(self._union) > 0: for u in self._union: union_sql = ' UNION ' if u['all']: union_sql = '%s ALL ' % (union_sql) query = '%s %s %s' % (query, union_sql, u['select'].compile(db)) self._sql = query return database_query_builder_where.compile(self, db)
def compile(self, db): # // Start a deletion query query = 'DELETE FROM %s' % (db.quote_table(self._table)) if len(self._where) > 0: # // Add deletion conditions query = '%s WHERE %s' % (query, self._compile_conditions(db, self._where)) if len(self._order_by) > 0: # // Add sorting query = '%s %s' % (query, self._compile_order_by(db, self._order_by)) if self._limit is not None: query = '%s LIMIT %s' % (query, self._limit) self._sql = query return database_query_builder_where.compile(self, db)
def compile(self, db): # // Start an update query query = 'UPDATE %s' % (db.quote_table(self._table)) # // Add the columns to update query = '%s SET %s' % (query, self._compile_set(db, self._set)) if len(self._where) > 0: # // Add selection conditions query = '%s WHERE %s' % (query, self._compile_conditions(db, self._where)) if len(self._order_by) > 0: query = '%s %s' % (query, self._compile_order_by(db, self._order_by)) if self._limit is not None: query = '%s LIMIT %s' % (query, self._limit) self._sql = query return database_query_builder_where.compile(self, db)