Shir0kamii / Flask-CSV

Easily render CSVs within any flask application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Flask-CSV

Easily render CSVs within any flask application

Install

Flask-CSV is packaged and you can use pip to install it:

pip install flask_csv

How to use ?

Flask-CSV has a simple hepler method named send_csv which allows you to send csv files in flask endpoints. It takes an iterable of dict, a filename and a list of fields. The keys of all dict in the iterable must correspond to given fields.

It will return a Response object with filename set and body containing the CSV data.

You will better understand with a short example.

Hitting this endpoint will return:

id,foo
42,bar
91,baz

Passing additionnal parameters

The remaining arguments of send_csv will be passed to send_file. For example, to disable caching, do the following:

You can also pass additionnal parameters to the CSV writer like this:

In this example, the "bar" key will not raise a ValueError since the writer will be given the parameter extrasaction with the value "ignore".

Change delimiter

You can also change the delimiter with the delimiter option.

Will result in:

id;foo
42;bar
91;baz

Specifying file encoding

You can also specify the encoding used to send the file, with the encoding option (utf-8 by default).

Use Marshmallow Schemas

You can use Schema from marshmallow by passing it as schema to send_csv. If you want to keep only ids and ensure they are integers, you could do:

And that would result in this:

id
42
91

SystemError returned a result with an error set

When using uwsgi for your flask app, it might raise this kind of error on the send_file method. If that were the case, adding the following option to your uwsgi conf should solve it :

wsgi-disable-file-wrapper = true

About

Easily render CSVs within any flask application

License:MIT License


Languages

Language:Python 100.0%