Difference between revisions of "Pyramid"

From RHS Wiki
Jump to navigation Jump to search
 
Line 63: Line 63:
 
     session.close()
 
     session.close()
 
  </source>
 
  </source>
 +
 +
== router ==
 +
edit __init__.py from projectnamefolder/projectnamefolder. Example:
 +
<source lang="python">
 +
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.add_static_view('static', 'static', cache_max_age=3600)
 +
    config.add_route('home', '/')
 +
    config.add_route('roms','roms/{id}')
 +
    config.add_route('create_session','roms/{id}/sessions')
 +
    config.scan()
 +
    return config.make_wsgi_app()
 +
</source>

Latest revision as of 19:32, 13 February 2016

Pyramid with postgresql and SQLAlchemy
Requirements

  • Pip
  • PostgreSQL
  • Virtualenv (optional VirtualenvWrapper)
  • SQLAlchemy (sudo apt-get install python-dev && pip install SQLAlchemy)

Install[edit]

easy_install "pyramid==1.6.1" 

or

sudo apt-get install python-pyramid

Create proyect[edit]

pcreate --list # shows options
pcreate -s alchemy indeed

run development server[edit]

pserve development.ini

Postgresql database config[edit]

in production.ini and development.in set:

sqlalchemy.url = postgresql://user:password@host/indeed

Migrations[edit]

from project folder:

initialize_proyectname_db

Insert into db script[edit]

import sys
from models import Rooms, DBSession
from sqlalchemy import engine_from_config
from pyramid.paster import get_appsettings, setup_logging

from sqlalchemy.orm import (
    scoped_session,
    sessionmaker,
    )
from zope.sqlalchemy import ZopeTransactionExtension

config_uri = '../development.ini'
setup_logging(config_uri)
engine = engine_from_config(get_appsettings(config_uri), 'sqlalchemy.')

Session = sessionmaker(bind=engine)
session = Session()

try:
    a = int(sys.argv[1])
except:
    print "Parametro erroneo, debe especificar id numerico", sys.argv
    exit()

new = Rooms(id=a)

try:
    session.add(new)
    session.commit()
    print "Insertada Room", new.id

except Exception as e:
    print "Error insertando Room {romid}: {error}".format(romid=new.id, error=e)
finally:
    session.close()

router[edit]

edit __init__.py from projectnamefolder/projectnamefolder. Example:

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.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/')
    config.add_route('roms','roms/{id}')
    config.add_route('create_session','roms/{id}/sessions')
    config.scan()
    return config.make_wsgi_app()