Skip to content

Commit

Permalink
Merge pull request #2024 from Pylons/feature/alchemy-scaffold-update
Browse files Browse the repository at this point in the history
alchemy scaffold updates
  • Loading branch information
mmerickel committed Feb 29, 2016
2 parents cb98a90 + a79bac6 commit 565fa59
Show file tree
Hide file tree
Showing 200 changed files with 5,142 additions and 3,497 deletions.
2 changes: 2 additions & 0 deletions CONTRIBUTORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,8 @@ Contributors

- Donald Stufft, 2015/03/15

- Randy Topliffe, 2015/04/14

- Timur Izhbulatov, 2015/04/14

- Karen Dalton, 2015/06/01
Expand Down
17 changes: 6 additions & 11 deletions docs/quick_tour.rst
Original file line number Diff line number Diff line change
Expand Up @@ -842,21 +842,16 @@ The ORM eases the mapping of database structures into a programming language.
SQLAlchemy uses "models" for this mapping. The scaffold generated a sample
model:

.. literalinclude:: quick_tour/sqla_demo/sqla_demo/models.py
:language: python
:linenos:
:lineno-start: 21
:lines: 21-
.. literalinclude:: quick_tour/sqla_demo/sqla_demo/models/mymodel.py
:start-after: Start Sphinx Include
:end-before: End Sphinx Include

View code, which mediates the logic between web requests and the rest of the
system, can then easily get at the data thanks to SQLAlchemy:

.. literalinclude:: quick_tour/sqla_demo/sqla_demo/views.py
:language: python
:linenos:
:lineno-start: 12
:lines: 12-18
:emphasize-lines: 4
.. literalinclude:: quick_tour/sqla_demo/sqla_demo/views/default.py
:start-after: Start Sphinx Include
:end-before: End Sphinx Include

.. seealso:: See also:
:ref:`Quick Tutorial Databases <qtut_databases>`, `SQLAlchemy
Expand Down
2 changes: 1 addition & 1 deletion docs/quick_tour/sqla_demo/development.ini
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ sqlalchemy.url = sqlite:///%(here)s/sqla_demo.sqlite

[server:main]
use = egg:waitress#main
host = 0.0.0.0
host = 127.0.0.1
port = 6543

###
Expand Down
2 changes: 1 addition & 1 deletion docs/quick_tour/sqla_demo/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

requires = [
'pyramid',
'pyramid_chameleon',
'pyramid_jinja2',
'pyramid_debugtoolbar',
'pyramid_tm',
'SQLAlchemy',
Expand Down
12 changes: 2 additions & 10 deletions docs/quick_tour/sqla_demo/sqla_demo/__init__.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,12 @@
from pyramid.config import Configurator
from sqlalchemy import engine_from_config

from .models import (
DBSession,
Base,
)


def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
Base.metadata.bind = engine
config = Configurator(settings=settings)
config.include('pyramid_chameleon')
config.include('pyramid_jinja2')
config.include('.models.meta')
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('home', '/')
config.scan()
Expand Down
27 changes: 0 additions & 27 deletions docs/quick_tour/sqla_demo/sqla_demo/models.py

This file was deleted.

7 changes: 7 additions & 0 deletions docs/quick_tour/sqla_demo/sqla_demo/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from sqlalchemy.orm import configure_mappers
# import all models classes here for sqlalchemy mappers
# to pick up
from .mymodel import MyModel # flake8: noqa

# run configure mappers to ensure we avoid any race conditions
configure_mappers()
49 changes: 49 additions & 0 deletions docs/quick_tour/sqla_demo/sqla_demo/models/meta.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
from sqlalchemy import engine_from_config
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.schema import MetaData
import zope.sqlalchemy

# Recommended naming convention used by Alembic, as various different database
# providers will autogenerate vastly different names making migrations more
# difficult. See: http://alembic.readthedocs.org/en/latest/naming.html
NAMING_CONVENTION = {
"ix": 'ix_%(column_0_label)s',
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(constraint_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
}

metadata = MetaData(naming_convention=NAMING_CONVENTION)
Base = declarative_base(metadata=metadata)


def includeme(config):
settings = config.get_settings()
dbmaker = get_dbmaker(get_engine(settings))

config.add_request_method(
lambda r: get_session(r.tm, dbmaker),
'dbsession',
reify=True
)

config.include('pyramid_tm')


def get_session(transaction_manager, dbmaker):
dbsession = dbmaker()
zope.sqlalchemy.register(dbsession,
transaction_manager=transaction_manager)
return dbsession


def get_engine(settings, prefix='sqlalchemy.'):
return engine_from_config(settings, prefix)


def get_dbmaker(engine):
dbmaker = sessionmaker()
dbmaker.configure(bind=engine)
return dbmaker
19 changes: 19 additions & 0 deletions docs/quick_tour/sqla_demo/sqla_demo/models/mymodel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from .meta import Base
from sqlalchemy import (
Column,
Index,
Integer,
Text,
)


# Start Sphinx Include
class MyModel(Base):
__tablename__ = 'models'
id = Column(Integer, primary_key=True)
name = Column(Text)
value = Column(Integer)
# End Sphinx Include


Index('my_index', MyModel.name, unique=True, mysql_length=255)
21 changes: 13 additions & 8 deletions docs/quick_tour/sqla_demo/sqla_demo/scripts/initializedb.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@
import sys
import transaction

from sqlalchemy import engine_from_config

from pyramid.paster import (
get_appsettings,
setup_logging,
)

from pyramid.scripts.common import parse_vars

from ..models import (
DBSession,
MyModel,
from ..models.meta import (
Base,
get_session,
get_engine,
get_dbmaker,
)
from ..models.mymodel import MyModel


def usage(argv):
Expand All @@ -32,9 +32,14 @@ def main(argv=sys.argv):
options = parse_vars(argv[2:])
setup_logging(config_uri)
settings = get_appsettings(config_uri, options=options)
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)

engine = get_engine(settings)
dbmaker = get_dbmaker(engine)

dbsession = get_session(transaction.manager, dbmaker)

Base.metadata.create_all(engine)

with transaction.manager:
model = MyModel(name='one', value=1)
DBSession.add(model)
dbsession.add(model)
Binary file not shown.
Binary file removed docs/quick_tour/sqla_demo/sqla_demo/static/footerbg.png
Binary file not shown.
Binary file removed docs/quick_tour/sqla_demo/sqla_demo/static/headerbg.png
Binary file not shown.
8 changes: 0 additions & 8 deletions docs/quick_tour/sqla_demo/sqla_demo/static/ie6.css

This file was deleted.

Binary file not shown.
Loading

0 comments on commit 565fa59

Please sign in to comment.