get tables commit transaction
How does this issue manifest itself?
 For example, I have a log table, and is split by date table, every time you insert new data, checks the table exists, then call `create_table` methods, parameters `fail_silently = True`, it does not exist is automatically created to perform the `execute_sql` method.

the emergence of a large number of `show tables; commit;` 
`show tables` operation is not whether it is necessary to `commit`?
 See #727, #806, #814 for why Peewee tends to issue commits with MySQL. In general I've found that users of the database are confused when it appears results are "cached" or they're not seeing changes. This happens when they have a long running process, for instance, and are issues reads with no commits.

If you would like to avoid the extra `COMMIT` statements, I'd suggest wrapping the code in a transaction using:

``` python
with db.atomic():
    # your code here.
```

Also, I don't know anything about your use case but it seems incredibly inefficient to be checking for the table existence before every insert statement when the data being inserted is log records. Just my .02 but that seems problematic.

```
def get_tables(self, schema=None):
    return [row for row, in self.execute_sql('SHOW TABLES')]
```

execute `execute_sql` method auto commit transaction.

but is it necessary to do so?

If often call `create_table` method will lead to too many invalid commit.
