Sto utilizzando il modulo Peewee come ORM per il mio progetto.Python Peewee execute_sql() esempio
Ho letto l'intera documentazione, non è chiaro l'esempio su come elaborare il risultato da db.execute_sql().
Ho rintracciato il codice, solo in grado di trovare db.execute_sql() indietro il cursore.
Qualcuno sa come elaborare il cursore, come iterare su di esso e ottenere indietro il risultato dalla complessa istruzione di selezione.
Aggiornamento: Ho appena trovato il seguente codice sorgente dalla cartella peewee, dovrebbe aiutare lo me per risolvere questo problema.
class QueryResultWrapper(object): """ Provides an iterator over the results of a raw Query, additionally doing two things: - converts rows from the database into python representations - ensures that multiple iterations do not result in multiple queries """ def __init__(self, model, cursor, meta=None): self.model = model self.cursor = cursor self.__ct = 0 self.__idx = 0 self._result_cache = [] self._populated = False self._initialized = False if meta is not None: self.column_meta, self.join_meta = meta else: self.column_meta = self.join_meta = None def __iter__(self): self.__idx = 0 if not self._populated: return self else: return iter(self._result_cache) def process_row(self, row): return row def iterate(self): row = self.cursor.fetchone() if not row: self._populated = True raise StopIteration elif not self._initialized: self.initialize(self.cursor.description) self._initialized = True return self.process_row(row) def iterator(self): while True: yield self.iterate() def next(self): if self.__idx self.__ct): try: self.next() except StopIteration: break
Qual è il tipo di oggetto restituito? Esegui 'sql_execute()' e stampa il risultato per vedere il suo tipo. – xbonez