Added convenience check to `freeze()`. If a whole table is passed

as a result set, rather than a result set, calls ``result.all()``
to automagically "do the right thing."
This commit is contained in:
Jonathan Eunice 2013-08-20 13:55:42 -04:00
parent e488664efe
commit 93c05eb542

View File

@ -3,6 +3,7 @@ import argparse
from sqlalchemy.exc import ProgrammingError from sqlalchemy.exc import ProgrammingError
from dataset.util import FreezeException from dataset.util import FreezeException
from dataset.persistence.table import Table
from dataset.persistence.database import Database from dataset.persistence.database import Database
from dataset.freeze.config import Configuration, Export from dataset.freeze.config import Configuration, Export
from dataset.freeze.format import get_serializer from dataset.freeze.format import get_serializer
@ -33,6 +34,9 @@ def freeze(result, format='csv', filename='freeze.csv',
result = db['person'].all() result = db['person'].all()
dataset.freeze(result, format='json', filename='all-persons.json') dataset.freeze(result, format='json', filename='all-persons.json')
If ``result`` is a table (rather than a result set), all records in
the table are exported (as if ``result.all()`` had been called).
freeze supports two values for ``mode``: freeze supports two values for ``mode``:
@ -73,7 +77,8 @@ def freeze(result, format='csv', filename='freeze.csv',
'mode': mode, 'mode': mode,
'wrap': wrap 'wrap': wrap
}) })
return freeze_export(Export({}, kw), result=result) records = result.all() if isinstance(result, Table) else result
return freeze_export(Export({}, kw), result=records)
def freeze_export(export, result=None): def freeze_export(export, result=None):