ジェネレータ初めて使ってみた
SQLを実行して、その行を1つずつyieldする。
こんな使い方であっているかな。
def search_tags(self, tags): query = ' and '.join(['tag = ?' for w in tags]) self.cur.execute('SELECT id, fullpath, filetitle, ext, size, sha512, mtime FROM files WHERE id IN (SELECT file_id FROM file_tag WHERE tag_id IN (SELECT id FROM tags WHERE %s))' % query, tags) for row in self.cur: yield {'id': row[0], 'fullpath': row[1], 'filetitle': row[2], 'ext': row[3], 'size': row[4], 'sha512': row[5], 'mtime': row[6] }