Pyramid

From RHS Wiki
Revision as of 19:32, 13 February 2016 by Rafahsolis (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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()