from sqlalchemy.schema import CreateTable
print(CreateTable(table))
如果使用声明性语法:
print(CreateTable(Model.__table__))
更新:
由于我已经接受了答案,并且klenwell答案中有重要信息,因此我也会在此处添加它。
我需要获取原始表sql才能为一些现有模型设置测试。这是我基于Antoine的答案作为概念证明为SQLAlchemy 0.7.4创建的成功单元测试:
from sqlalchemy import create_enginefrom sqlalchemy.schema import CreateTablefrom model import Foosql_url = "sqlite:///:memory:" db_engine = create_engine(sql_url)table_sql = CreateTable(Foo.table).compile(db_engine)self.assertTrue("CREATE TABLE foos" in str(table_sql))您可以通过使用引擎进行编译来获取特定数据库(MySQL,Postgresql等)的SQL。
print(CreateTable(Model.__table__).compile(engine))
更新2:
@jackotonye在注释中添加了一种无需引擎即可完成此操作的方法。
print(CreateTable(Model.__table__).compile(dialect=postgresql.dialect()))



