私はプロジェクトのORMとしてPeeweeモジュールを使用しています。Python Peewee execute_sql()例
私は文書全体を読みましたが、db.execute_sql()の結果を処理する方法については、明確な の例はありません。
私はコードをトレースしただけで、db.execute_sql()がカーソルを戻すことができます。
誰かがそれを繰り返し処理するなど、カーソルを処理する方法を知っていて、 を複雑なselect文から戻します。
アップデート:私はちょうどpeeweeフォルダから次のソースコードを見つけました。それは 私がこの問題を解決するのに役立ちます。
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
返されるオブジェクトのタイプは? 'sql_execute()'を実行し、結果を出力してその型を見ます。 – xbonez