Python 金字塔相当于Django';是syncdb命令吗?

Python 金字塔相当于Django';是syncdb命令吗?,python,django,sqlalchemy,web-frameworks,pyramid,Python,Django,Sqlalchemy,Web Frameworks,Pyramid,我注意到,在应用程序运行时,数据库在main函数中初始化 def main(global_config, **settings): """ This function returns a WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') initialize_sql(engine) # -- and so on --- 其中,initialize\u sq

我注意到,在应用程序运行时,数据库在main函数中初始化

def main(global_config, **settings):
    """ This function returns a WSGI application.
    """
    engine = engine_from_config(settings, 'sqlalchemy.')
    initialize_sql(engine)
    # -- and so on ---
其中,
initialize\u sql
定义如下:

def initialize_sql(engine):
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine
    Base.metadata.create_all(engine)
    try:
        session = DBSession()
        page = Page('FrontPage', 'initial data')
        session.add(page)
        transaction.commit()
    except IntegrityError:
        # already created
        pass
这实际上创建了所有的表(如果它们不存在的话),并用一些初始值填充它们。很容易理解,但是

这只是一个演示小型应用程序的教程,因此在生产中通常是如何完成的可能有所不同(或者不…)。这就引出了我的问题:


将Pyramid与SQLAlchemy一起使用时,以这种方式初始化数据库是生产中的一种典型模式,还是在Django中使用类似于手动调用的
manage syncdb
命令的典型模式?

因为Pyramid不对数据模型进行任何假设,它不会尝试为您管理它们。这完全取决于您和您使用的特定数据层


关于使用SQLAlchemy,可以使用SQLAlchemy迁移包管理迁移。设置此选项时,它会为您提供一个执行迁移的
manage
命令。

澄清一下:我很可能计划使用SQLAlchemy(我也是新手)。虽然我确实觉得金字塔的设计理念很有吸引力,但我还没有找到任何典型使用的好例子。上面的教程示例是进行db初始化的合法、常见的方法吗?或者这只是一个玩具“Hello World”网站?(我正在尽我所能避免自己重新发明一个square-wheel-syncdb命令)。这不是在生产站点中的做法,但对于教程来说很方便。迁移总是可变的。Django有South,SQLAlchemy有SQLAlchemy迁移,您也可以始终使用原始SQL迁移脚本。初始化和迁移数据库几乎总是因项目或公司而异。