You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This bottle-sqlalchemy plugin integrates SQLAlchemy with your Bottle
application. It injects a SQLAlchemy session in your route and handle the session cycle.
Usage Example:
importbottlefrombottleimportHTTPErrorfrombottle.extimportsqlalchemyfromsqlalchemyimportcreate_engine, Column, Integer, Sequence, Stringfromsqlalchemy.ext.declarativeimportdeclarative_baseBase=declarative_base()
engine=create_engine('sqlite:///:memory:', echo=True)
app=bottle.Bottle()
plugin=sqlalchemy.Plugin(
engine, # SQLAlchemy engine created with create_engine function.Base.metadata, # SQLAlchemy metadata, required only if create=True.keyword='db', # Keyword used to inject session database in a route (default 'db').create=True, # If it is true, execute `metadata.create_all(engine)` when plugin is applied (default False).commit=True, # If it is true, plugin commit changes after route is executed (default True).use_kwargs=False# If it is true and keyword is not defined, plugin uses **kwargs argument to inject session database (default False).
)
app.install(plugin)
classEntity(Base):
__tablename__='entity'id=Column(Integer, Sequence('id_seq'), primary_key=True)
name=Column(String(50))
def__init__(self, name):
self.name=namedef__repr__(self):
return"<Entity('%d', '%s')>"% (self.id, self.name)
@app.get('/:name')defshow(name, db):
entity=db.query(Entity).filter_by(name=name).first()
ifentity:
return {'id': entity.id, 'name': entity.name}
returnHTTPError(404, 'Entity not found.')
@app.put('/:name')defput_name(name, db):
entity=Entity(name)
db.add(entity)
@app.get('/spam/:eggs', sqlalchemy=dict(use_kwargs=True))@bottle.view('some_view')defroute_with_view(eggs, db):
# do something useful here
It is up to you create engine and metadata, because SQLAlchemy has
a lot of options to do it. The plugin just handle the SQLAlchemy
session.