【问题标题】:Pyramid equivalent to Django's syncdb command?Pyramid 相当于 Django 的 syncdb 命令?
【发布时间】:2011-10-08 22:16:19
【问题描述】:

我在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 命令等效的东西?

【问题讨论】:

    标签: python django sqlalchemy web-frameworks pyramid


    【解决方案1】:

    由于 Pyramid 不对数据模型做出任何假设,因此它不会尝试为您管理它们。这完全取决于您和您使用的具体数据层。

    关于使用 SQLAlchemy,可以使用 SQLAlchemy-migrate 包来管理迁移。当您进行设置时,它会为您提供一个 manage 命令来执行迁移。

    【讨论】:

    • 澄清一下:我很可能计划使用 SQLAlchemy(我也是新手)。虽然我确实发现 Pyramid 的设计理念很有吸引力,但我还没有找到任何关于它通常如何使用的好例子。上面的教程示例是进行数据库初始化的合法常用方法吗?还是应该将其视为玩具“Hello World”网站? (我正在尽我所能避免自己重新发明方轮同步数据库命令的前景)。
    • 这不是在生产站点中这样做的,但是对于教程来说很方便。迁移总是可变的。 Django 有 South,SQLAlchemy 有 SQLAlchemy-migrate,你也可以随时使用原始 SQL 迁移脚本。初始化和迁移数据库几乎总是因项目或公司而异。
    猜你喜欢
    • 2015-04-11
    • 2015-08-22
    • 2014-01-18
    • 2015-04-25
    • 2020-01-20
    • 2012-02-24
    • 1970-01-01
    • 2010-09-27
    • 2012-06-10
    相关资源
    最近更新 更多