# `csvexport`

#### Exports a SQLObject class (possibly annotated) to a CSV file.

The csvexport module is accessible via the `sqlobject.util` module.

## Attributes

#### a `__package__`

    'sqlobject.util'

## Functions

#### f `export_csv(soClass, select=None, writer=None, connection=None, orderBy=None)` ...

Export the SQLObject class `soClass` to a CSV file.

`soClass` can also be a SelectResult object, as returned by `.select()`. If it is a class, all objects will be retrieved, ordered by `orderBy` if given, or the `.csvOrderBy` attribute if present (but csvOrderBy will only be applied when no select result is given).

You can also pass in select results (or simply a list of instances) in `select` -- if you have a list of objects (not a SelectResult instance, as produced by `.select()`) then you must pass it in with `select` and pass the class in as the first argument.

`writer` is a `csv.writer()` object, or a file-like object. If not given, the string of the file will be returned.

Uses `connection` as the data source, if given, otherwise the default connection.

Columns can be annotated with `.csvTitle` attributes, which will form the attributes of the columns, or 'title' (secondarily), or if nothing then the column attribute name.

If a column has a `.noCSV` attribute which is true, then the column will be suppressed.

Additionally a class can have an `.extraCSVColumns` attribute, which should be a list of strings/tuples. If a tuple, it should be like `(attribute, title)`, otherwise it is the attribute, which will also be the title. These will be appended to the end of the CSV file; the attribute will be retrieved from instances.

Also a `.csvColumnOrder` attribute can be on the class, which is the string names of attributes in the order they should be presented.

#### f `export_csv_zip(soClasses, file=None, zip=None, filename_prefix='', connection=None)` ...

Export several SQLObject classes into a .zip file. Each item in the `soClasses` list may be a SQLObject class, select result, or `(soClass, select)` tuple.

Each file in the zip will be named after the class name (with `.csv` appended), or using the filename in the `.csvFilename` attribute.

If `file` is given, the zip will be written to that. `file` may be a string (a filename) or a file-like object. If not given, a string will be returnd.

If `zip` is given, then the files will be written to that zip file.

All filenames will be prefixed with `filename_prefix` (which may be a directory name, for instance).

See the source for more information.