在任何烧瓶应用中轻松渲染CSV
Flask-CSV的Python项目详细描述
轻松渲染任何烧瓶应用程序中的CSV
安装
烧瓶csv已打包,您可以使用pip安装:
pip install flask_csv
如何使用?
flask csv有一个名为send_csv
的简单hepler方法,它允许您发送
烧瓶端点中的csv文件。它需要一个dict
的iterable、一个文件名和一个
字段列表。iterable中所有dict
的键必须与
给定字段。
它将返回一个Response
对象,其文件名集和正文包含
CSV数据。
举个简短的例子你会更好地理解。
@app.route("/")defindex():returnsend_csv([{"id":42,"foo":"bar"},{"id":91,"foo":"baz"}],"test.csv",["id","foo"])
点击此端点将返回:
id,foo 42,bar 91,baz
传递附加参数
send_csv
的其余参数将传递给send_file
。为
例如,要禁用缓存,请执行以下操作:
send_csv([{"id":42,"foo":"bar"},{"id":91,"foo":"baz"}],"test.csv",["id","foo"],cache_timeout=0)
您还可以将附加参数传递给csv编写器,如下所示:
send_csv([{"foo":42},{"bar":"baz"}],"test.csv",["foo"],writer_kwargs={"extrasaction":"ignore"})
在本例中,“bar”键不会引发一个ValueError
,因为编写器
将为参数extrasaction
赋予值“ignore”。
更改分隔符
还可以使用delimiter
选项更改分隔符。
send_csv([{"id":42,"foo":"bar"},{"id":91,"foo":"baz"}],"test.csv",["id","foo"],delimiter=';')
将导致:
id;foo 42;bar 91;baz
指定文件编码
还可以使用encoding
选项(默认情况下为utf-8
)指定用于发送文件的编码。
send_csv([{"id":42,"foo":"bar"},{"id":91,"foo":"baz"}],"test.csv",["id","foo"],encoding='iso-8859-1')
使用棉花糖模式
您可以使用棉花糖中的Schema
,方法是将其作为schema
传递给send_csv
。
如果您只想保留id并确保它们是整数,可以这样做:
classIdSchema(Schema):id=fields.Integer()send_csv([{"id":42,"foo":"bar"},{"id":91,"foo":"baz"}],"test.csv",["id","foo"],schema=IdSchema())
结果是:
id 42 91
systemerror返回一个带有错误集的结果
在为flask应用程序使用uwsgi时,可能会在send_file方法上引发此类错误。 如果是这样的话,在uwsgi配置中添加以下选项应该可以解决问题:
wsgi-disable-file-wrapper = true