0
点赞
收藏
分享

微信扫一扫

tornado 分页读取数据库 实时下载csv

class downloadHandler(RequestHandler):

def fetdata(self,inde):

        with MogoContext() as mongo:

            res=list(mongo.db['datas'].find().limit(10).skip(inde*10))

            for d in res:

                yield d

def get(self):

        page=1

        self.set_header('Content-Type', 'text/csv; charset=utf-8')

        self.set_header('Content-Disposition', 'attachment; filename="data.csv"')

        self.set_header('Cache-Control', 'no-cache')

        while True:

            data=  list(self.fetdata(page))

            if len(data) == 0:

                break

            stream = io.StringIO()

            writer = csv.writer(stream)

            for row in data:

                writer.writerow(list(row.values()))

            self.write(stream.getvalue().encode('gbk'))

            self.flush()

            page+=1

        self.finish()

举报

相关推荐

0 条评论