Pyramid
Revision as of 19:32, 13 February 2016 by Rafahsolis (talk | contribs)
Pyramid with postgresql and SQLAlchemy
Requirements
- Pip
- PostgreSQL
- Virtualenv (optional VirtualenvWrapper)
- SQLAlchemy (sudo apt-get install python-dev && pip install SQLAlchemy)
Install
easy_install "pyramid==1.6.1"
or
sudo apt-get install python-pyramid
Create proyect
pcreate --list # shows options pcreate -s alchemy indeed
run development server
pserve development.ini
Postgresql database config
in production.ini and development.in set:
sqlalchemy.url = postgresql://user:password@host/indeed
Migrations
from project folder:
initialize_proyectname_db
Insert into db script
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 __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()