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 dataset.util import FreezeException
from dataset.persistence.table import Table
from dataset.persistence.database import Database
from dataset.freeze.config import Configuration, Export
from dataset.freeze.format import get_serializer
@ -33,6 +34,9 @@ def freeze(result, format='csv', filename='freeze.csv',
result = db['person'].all()
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``:
@ -73,7 +77,8 @@ def freeze(result, format='csv', filename='freeze.csv',
'mode': mode,
'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):