Esempio n. 1
0
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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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
Esempio n. 4
0
 def getTestResults(self):
     sql = self.request.form['sql']
     result = queryForResults(self.context(), sql)
     return result
Esempio n. 5
0
 def lenResults(self):
     conn = self._getDBConnection()
     query = 'SELECT count(*) AS count %s;' % self._getQuery()
     return queryForResults(conn, query)[0].count