ENH: SQL apply
Hello,

Is it possible to add natively this method to pandas.DataFrame ?

```python
import random, string, typing
from pandas.io.sql import to_sql, read_sql

schars = """!"#$%&\'()*+,-./:;<=>?@[\\]^`{|}~ éèùà$£µç"""

def sql(
    self, sql: str, con: "Engine" = None, dispose: bool = False,
    schema: typing.Any = None, **kwargs: typing.Any
):
    from sqlalchemy import create_engine, inspect

    if con is None:
        con, dispose = create_engine('sqlite:///:memory:'), True
    elif isinstance(con, str):
        con, dispose = create_engine(con), True
    elif isinstance(con, dict):
        con, dispose = create_engine(**con), True
    
    # tmp name
    name = ''.join(random.choice(string.ascii_uppercase) for i in range(24))
    sql = sql.replace('{df}', name)

    if isinstance(self.columns, pandas.MultiIndex):
        new = self.copy()
        new.columns = [" ".join(col).strip() for col in new.columns.values]
        to_sql(
            new, name=name, con=con, schema=schema, if_exists='replace', method='multi'
        )
    else:
        to_sql(self, name=name, con=con, if_exists='replace', schema=schema, method='multi')
    parse_dates = [c for c in self.columns.values if self[c].dtype.kind == 'M']
    
    try:
        return read_sql(
            sql, con=con, parse_dates=parse_dates, **kwargs
        )
    except Exception as e:
        raise e
    finally:
        # Clean
        ## Check sepical chars
        if any(x in name for x in schars):
            name = '"%s"' % name
        if schema is not None:
            if any(x in schema for x in schars):
                schema = '"%s"' % schema
            name = "%s.%s" % (schema, name)
        con.execute('DROP TABLE IF EXISTS %s' % name)
        if dispose:
            con.dispose()
```

Could be cool feature
Br
Nicolas