Example #1
0
 def getSome(self, *args, **fieldData):
     """
     """
     order = fieldData.pop('order', None)
     limit = fieldData.pop('limit', None)
     offset = fieldData.pop('offset', None)
     conn = self.getDBI()
     sql, values = self.objL._processWhere(conn, args, fieldData)
     query = [self._baseSelect()]
     if sql:
         query.extend(['WHERE', sql])
     if not every(None, (order, limit, offset)):
         query.append(conn.orderByString(order, limit, offset))
     query = ' '.join(query)
     # we don't use the execute() method here, because we don't
     # want a dictionary, we need to know the order of columns in
     # the result set
     cursor = conn.cursor()
     if conn.verbose:
         debug("SQL: %s", query)
         debug("bind variables: %s", values)
     cursor.execute(query, values)
     ret = []
     while 1:
         row = cursor.fetchone()
         if row is None:
             break
         ret.append(self._resolveObjects(row))
     cursor.close()
     return tuple(ret)
 def getSequence(self, name):
     cur=self.conn.cursor()
     sql="select nextval('%s')" % name
     if self.verbose:
         debug("SQL: %s", (sql,))
     cur.execute(sql)
     res=cur.fetchone()
     if not res:
         raise PyDOError, "could not get value for sequence %s!" % name
     return res[0]
 def execute(self, sql, values=(), qualified=False):
     """Executes the statement with the values and does conversion
     of the return result as necessary.
     result is list of dictionaries, or number of rows affected"""
     if self.verbose:
         debug("SQL: %s", sql)
         debug("bind variables: %s", values)
     c=self.conn.cursor()
     if values:
         c.execute(sql, values)
     else:
         c.execute(sql)
     if c.statusmessage=='SELECT':
         resultset=c.fetchall()
     else:
         resultset=None
     if not resultset:
         if c.statusmessage.startswith('INSERT') or c.statusmessage.startswith('UPDATE'):
             # rowcount doesn't work
             return int(c.statusmessage.split()[-1])
         return -1
     res=self._convertResultSet(c.description, resultset, qualified)
     c.close()
     return res