diff options
| -rw-r--r-- | docs/tutorials/wiki2/src/models/tutorial/scripts/initialize_db.py | 77 |
1 files changed, 38 insertions, 39 deletions
diff --git a/docs/tutorials/wiki2/src/models/tutorial/scripts/initialize_db.py b/docs/tutorials/wiki2/src/models/tutorial/scripts/initialize_db.py index f3c0a6fef..af4c625ae 100644 --- a/docs/tutorials/wiki2/src/models/tutorial/scripts/initialize_db.py +++ b/docs/tutorials/wiki2/src/models/tutorial/scripts/initialize_db.py @@ -1,57 +1,56 @@ import os import sys -import transaction -from pyramid.paster import ( - get_appsettings, - setup_logging, - ) +from pyramid.paster import bootstrap, setup_logging +from sqlalchemy.exc import OperationalError + +from ..models import Page, User -from pyramid.scripts.common import parse_vars -from ..models.meta import Base -from ..models import ( - get_engine, - get_session_factory, - get_tm_session, +def setup_models(dbsession): + editor = User(name='editor', role='editor') + editor.set_password('editor') + dbsession.add(editor) + + basic = User(name='basic', role='basic') + basic.set_password('basic') + dbsession.add(basic) + + page = Page( + name='FrontPage', + creator=editor, + data='This is the front page', ) -from ..models import Page, User + dbsession.add(page) def usage(argv): cmd = os.path.basename(argv[0]) - print('usage: %s <config_uri> [var=value]\n' + print('usage: %s <config_uri>\n' '(example: "%s development.ini")' % (cmd, cmd)) sys.exit(1) def main(argv=sys.argv): - if len(argv) < 2: + if len(argv) != 2: usage(argv) config_uri = argv[1] - options = parse_vars(argv[2:]) setup_logging(config_uri) - settings = get_appsettings(config_uri, options=options) - - engine = get_engine(settings) - Base.metadata.create_all(engine) - - session_factory = get_session_factory(engine) - - with transaction.manager: - dbsession = get_tm_session(session_factory, transaction.manager) - - editor = User(name='editor', role='editor') - editor.set_password('editor') - dbsession.add(editor) - - basic = User(name='basic', role='basic') - basic.set_password('basic') - dbsession.add(basic) - - page = Page( - name='FrontPage', - creator=editor, - data='This is the front page', - ) - dbsession.add(page) + env = bootstrap(config_uri) + + try: + with env['request'].tm: + dbsession = env['request'].dbsession + setup_models(dbsession) + except OperationalError: + print(''' +Pyramid is having a problem using your SQL database. The problem +might be caused by one of the following things: + +1. You may need to initialize your database tables with `alembic`. + Check your README.txt for description and try to run it. + +2. Your database server may not be running. Check that the + database server referred to by the "sqlalchemy.url" setting in + your "development.ini" file is running. + ''') |
