我在 Pyramid + SQLAlchemy + URL Dispatch Wiki Tutorial 中注意到,当应用程序运行时,数据库是在主函数中初始化的。
def main(global_config, **settings):
""" This function returns a WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
initialize_sql(engine)
# -- and so on ---
其中
initialize_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-migrate 包管理迁移。当您进行设置时,它会为您提供一个 manage
命令来执行迁移。
关于python - Pyramid 相当于 Django 的 syncdb 命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6754465/