def execute_query(context, query): from zope.app import zapi from zope.app.rdb import queryForResults from zope.app.rdb.interfaces import IZopeDatabaseAdapter conn = zapi.getUtility(IZopeDatabaseAdapter, config.db_connection, context=context)() return queryForResults(conn, query)
def _getResults(self): request = self.request start = request.get('start', None) or 0 sort_on = request.get('sort_on', self._sort_on) sort_order = request.get('sort_order', 'desc') batch = self.getBatch() conn = self._getDBConnection() order_by = 'ORDER BY %s %s LIMIT %s OFFSET %s' % (sort_on, sort_order, batch, start) query = 'SELECT * %s %s;' % (self._getQuery(), order_by) return queryForResults(conn, query)
def __call__(self, **kw): """See zope.app.rdb.interfaces""" # Try to resolve arguments arg_values = {} missing = [] for name in self._arguments.keys(): name = name.encode('UTF-8') try: # Try to find argument in keywords arg_values[name] = kw[name] except KeyError: # Okay, the first try failed, so let's try to find the default arg = self._arguments[name] try: arg_values[name] = arg['default'] except KeyError: # Now the argument might be optional anyways; let's check try: if not arg['optional']: missing.append(name) except KeyError: missing.append(name) try: connection = self.getConnection() except KeyError: raise AttributeError("The database connection '%s' cannot be " "found." % (self.connectionName)) query = apply(self.template, (), arg_values) cache = getCacheForObject(self) location = getLocationForCache(self) if cache and location: _marker = object() result = cache.query(location, {'query': query}, default=_marker) if result is not _marker: return result result = queryForResults(connection, query) if cache and location: cache.set(result, location, {'query': query}) return result
def getTestResults(self): sql = self.request.form['sql'] result = queryForResults(self.context(), sql) return result
def lenResults(self): conn = self._getDBConnection() query = 'SELECT count(*) AS count %s;' % self._getQuery() return queryForResults(conn, query)[0].count