Я заметил в 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, является ли это типичным шаблоном в производственной среде для инициализации базы данных таким образом или типичным является использование чего-то эквивалентного команде manage syncdb
в Django, которая вызывается вручную?