ORM – object relational mapping¶
sf – ORM session factory¶
Module sf defines SessionFactory class which is central
point for your ORM mapping and SQL database access providing connections
to database.
-
class
summer.sf.SessionProvider[source]¶ Bases:
objectClass to be used as based for providing SqlAlchemy session.
See default implementation in
summer.sf.DefaultSessionProvider.-
engine¶ Get SqlAlchemy engine implementation.
Returns: SqlAlchemy engine implementation Return type: sqlalchemy.engine.Engine
-
sessionmaker¶ Get SqlAlchemy session factory class.
Returns: SqlAlchemy session factory class Return type: sqlalchemy.orm.sessionmaker
-
__weakref__¶ list of weak references to the object (if defined)
-
-
class
summer.sf.SessionFactory(session_provider: summer.sf.SessionProvider)[source]¶ Bases:
objectThread safe SqlAlchemy session provider.
-
class
Local(engine: sqlalchemy.engine.base.Engine, sessionmaker: sqlalchemy.orm.session.sessionmaker)[source]¶ Bases:
_thread._localThread local session & connection wrapper.
-
sqlalchemy_session¶ Get current SqlAlchemy session.
Returns: existing of just created SqlAlchemy session. Return type: sqlalchemy.orm.Session
-
autocommit¶ Delegates to
sqlalchemy_session.autocommit().
-
connection¶ Use
connection.connectionto obtain Python DB API connection.Returns: current thread-bound SqlAclhemy connection Return type: sqlalchemy.engine.Connection
-
active¶ Get status of current SqlAlchemy transaction.
Returns: True if transaction is in progress, False otherwise. Return type: bool
-
-
SessionFactory.__init__(session_provider: summer.sf.SessionProvider)[source]¶ Creates
SessionFactoryinstance.Parameters: uri (str) – SqlAlchemy connection string (including username and password)
-
SessionFactory.table_definitions¶ Get current table definitions.
Returns: current TableDefinitionsinstanceReturn type: TableDefinitions
-
SessionFactory.class_mappings¶ Get current class mappings.
Returns: current ClassMappingsinstanceReturn type: ClassMappings
-
SessionFactory.session¶ Get current thread-local SqlAlchemy session wrapper (creating one, if non-exististent).
Returns: existing or just created SqlAlchemy session wrapper Return type: SessionFactory.Local
-
SessionFactory.sqlalchemy_session¶ Delegates to
SessionFactory.Local.sqlalchemy_session().
-
SessionFactory.connection¶ Delegates to
SessionFactory.Local.connection().
-
SessionFactory.dialect¶ Get SqlAlchemy dialect.
Returns: current SqlAlchemy dialect Return type: sqlalchemy.engine.Dialect
-
SessionFactory.is_sqlite¶ SQLite is great database for testing or local access, but not designed for multi-threaded/-process applications. Sometimes it is handy to know you are using it to bypass its limitations.
Returns: True if running over sqlite, False otherwise. Return type: bool
-
SessionFactory.create_schema()[source]¶ Create database schema using SqlAlchemy. Call once
table_definitionsare set.Use with caution – will destroy all your data!
-
SessionFactory.__weakref__¶ list of weak references to the object (if defined)
-
class
-
class
summer.sf.AbstractTableDefinitions[source]¶ Bases:
objectContainer for SqlAlchemy table definitions. Registers itself at session factory. A callback class – use to provide table definitions to ORM.
See
summer.context.Context.orm_init()method.-
define_tables(session_factory: summer.sf.SessionFactory)[source]¶ Override in subclasses to define database tables.
-
__weakref__¶ list of weak references to the object (if defined)
-
-
class
summer.sf.AbstractClassMappings[source]¶ Bases:
objectContainer for SqlAlchemy mappings. Registers itself at session factory. A callback class – use to provide class mappings to ORM.
See
summer.context.Context.orm_init()method.-
__weakref__¶ list of weak references to the object (if defined)
-
dao – ORM data access object support¶
Provides DAO support.
Base Dao class provides access to Dao.session() and
py:meth:Dao.connection properties.
That means that inside any DAO object subclassed from Dao you
can access current (thread-bound) SqlAlchemy session simply by accessing
Dao.session() and direct connection to database by accessing
Dao.connection().
Much more interesting is EntityDao class which is inteded to be
used as a base DAO class for your summer.domain.Entity.
-
class
summer.dao.Dao(session_factory: summer.sf.SessionFactory)[source]¶ Bases:
objectBase DAO class.
Provides safe access to thread bound session through
sessionattribute. Alternative isget_session().-
__init__(session_factory: summer.sf.SessionFactory)[source]¶ Creates
Daoinstance.Parameters: session_factory (SessionFactory) – session factory to be used
-
session¶ Get current session (bound to current thread).
Returns: current sqlalchemy.orm.SessioninstanceReturn type: Session
-
connection¶ Get current connection (bound to current thread).
Use
connection.connectionto obtain Python DB API 2.0 connection object.Returns: current sqlalchemy.engine.ConnectioninstanceReturn type: Connection
-
__weakref__¶ list of weak references to the object (if defined)
-
-
class
summer.dao.EntityDao(session_factory: summer.sf.SessionFactory, clazz: type)[source]¶ Bases:
summer.dao.DaoBase DAO class for persistent classes subclassed from
summer.domain.Entity.Provides basic persistent operations.
Defines another property –
query()– access to generic SqlAlchemy query overclazz().-
__init__(session_factory: summer.sf.SessionFactory, clazz: type)[source]¶ Creates
EntityDaoinstance.Parameters: - session_factory (SessionFactory) – session factory intance to be
passed to superclass
(
Dao) - clazz (type) – reference to class type
- session_factory (SessionFactory) – session factory intance to be
passed to superclass
(
-
query¶ Get new query instance using
clazz().Returns: query over clazz()Return type: sqlalchemy.orm.Query
-
_check_entity(entity: summer.domain.Entity)[source]¶ Check if entity is correct.
Parameters: entity (Entity) – entity instance to be checked
-
_get_result_list(query: sqlalchemy.orm.query.Query, query_filter: summer.domain.Filter) → list[source]¶ Get list of entities with filter offset applied. Useful for paging.
Parameters: - query (Query) – query to be executed
- query_filter (Filter) – filter to be used for paging
Returns: list of entities using query and paging supplied
Return type: list
-
get(ident: object) → summer.domain.Entity[source]¶ Get entity by
Entity.idattribute.Parameters: ident (object) – primary key for EntityReturns: - entity instance or raise
NoResultFoundif - none is found
Return type: Entity - entity instance or raise
-
save(entity: summer.domain.Entity) → summer.domain.Entity[source]¶ Save an entity.
Parameters: entity (Entity) – entity to be persisted Returns: persisted instance Return type: Entity
-
merge(entity: summer.domain.Entity) → summer.domain.Entity[source]¶ Merge an entity.
Same as
save(), but entity is associated with current session if it is not. For example if entity comes from another session (or thread).Parameters: entity (Entity) – entity to be merged Returns: persisted instance Return type: Entity
-
delete(entity_or_id: object) → summer.domain.Entity[source]¶ Delete an entity.
Parameters: entity_or_id (object) – either Entityor its primary keyReturns: just deleted entity instance Return type: Entity
-
find(query_filter: summer.domain.Filter) → list[source]¶ Find collection of entities.
Parameters: query_filter (Filter) – filter with at least paging set Returns: list of entities using query and paging supplied Return type: list
-
-
class
summer.dao.CodeEntityDao(session_factory: summer.sf.SessionFactory, clazz: type)[source]¶ Bases:
summer.dao.EntityDaoBase DAO class for persistent classes subclassed from
summer.domain.CodeEntity.-
__init__(session_factory: summer.sf.SessionFactory, clazz: type)[source]¶ Creates
CodeEntityDaoinstance.Parameters: - session_factory (SessionFactory) – session factory intance to be
passed to superclass
(
Dao) - clazz (type) – reference to class type
- session_factory (SessionFactory) – session factory intance to be
passed to superclass
(
-