Difference between revisions of "Pyramid"
Jump to navigation
Jump to search
Rafahsolis (talk | contribs) |
Rafahsolis (talk | contribs) |
||
| (3 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
Pyramid with postgresql and SQLAlchemy<br /> | Pyramid with postgresql and SQLAlchemy<br /> | ||
Requirements | Requirements | ||
| + | * Pip | ||
* PostgreSQL | * 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 == | == Postgresql database config == | ||
in production.ini and development.in set: | in production.ini and development.in set: | ||
sqlalchemy.url = postgresql://user:password@host/indeed | sqlalchemy.url = postgresql://user:password@host/indeed | ||
| + | |||
| + | == Migrations == | ||
| + | from project folder: | ||
| + | initialize_proyectname_db | ||
| + | |||
| + | == Insert into db script == | ||
| + | <source lang="python"> | ||
| + | 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() | ||
| + | </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()