SQL from migrator
This is not really exposed. Operations may be composed of multiple steps, so the migrations module uses an abstraction (`Operation`) to run potentially multiple queries. Additionally, steps may include validation that requires a previous step having been run (before the sql is generated). How do you get the sql for an operation in general, though (which may be composed of sub-operations)?

```python
# i think this should, generally, work
op = migrator.add_column('my_sqlite_table', 'new_col', TextField(default=''))
q = [op]
while q:
    item = q.pop()
    if isinstance(item, Operation):
        kw = item.kwargs.copy()
        kw['with_context'] = True
        q.append(getattr(migrator, item.method)(*item.args, **kw))
    elif isinstance(item, list):
        q.extend(item[::-1])
    elif isinstance(item, Node):
        print(migrator.make_context().sql(item).query())
    else:
        print(item.query())
```

Alternatively, you can attach a sql log handler:

```python
import logging
logger = logging.getLogger('peewee')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
```
Hello my friends,

`migrate(
    migrator.add_column('some_table', 'title', title_field),
    migrator.add_column('some_table', 'status', status_field),
    migrator.drop_column('some_table', 'old_column'),
)`

how to get SQL code?

thanks, Konrad