def from_sql(sql, engine, limit=None, **kwargs):
if limit is not None:<EOL><INDENT>sql = sql.limit(limit)<EOL><DEDENT>result_proxy = engine.execute(sql)<EOL>return from_db_cursor(result_proxy.cursor)<EOL>
Create a :class:`prettytable.PrettyTable` from :class:`sqlalchemy.select`.

:type sql: Select
:param sql: a ``sqlalchemy.sql.selectable.Select`` object.

:type engine: Engine
:param engine: an ``sqlalchemy.engine.base.Engine`` object.

:type limit: int
:param limit: int, limit rows to return.

:rtype: PrettyTable

**中文文档**

将sqlalchemy的sql expression query结果放入prettytable中.

.. note::

    注意, from_db_cursor是从原生的数据库游标通过调用fetchall()方法来获取数据。
    而sqlalchemy返回的是ResultProxy类。所以我们需要从中获取游标
    至于为什么不能直接使用 from_db_cursor(engine.execute(sql).cursor) 的语法
    我也不知道为什么.