PyAMS SQLAlchemy integration¶
-pyams_alchemy package is a small package which can be used to make SQLAlchemy integration more simple.
-The main goal of pyams_alchemy package is to define the pyams_alchemy.engine.AlchemyEngineUtility
class:
-this class can be stored persistently into PyAMS local site manager (see PyAMS site management) to store settings of an
-SQLAlchemy engine; on user request, the pyams_alchemy.engine.get_user_session()
function can be used to get
-access to a new SQLAlchemy engine session matching these settings which will to be bound to current Pyramid’s
-transaction.
Dynamic schema names¶
-Some times you may have to be able to setup, for a given table, a schema name which is not static but can be dynamic -through a configuration option.
-This can be done easily with the help of the pyams_alchemy.mixin.DynamicSchemaMixin
which you can inherit from
-in any SQLAlchemy table subclass.
When this is done, the schema name can be defined into Pyramid’s configuration file into a setting which is called -pyams_alchemy:{module_name}.{class_name}.schema; for example like in -pyams_alchemy:pyams_content.package.TableName.schema. If not specified, the table’s schema name can be defined in a -classic __schema__ table’s attribute.
-Submodules¶
-pyams_alchemy.engine module¶
--
-
-
-class
pyams_alchemy.engine.
AlchemyEngineUtility
(name='', dsn='', echo=False, use_pool=True, pool_size=25, pool_recycle=-1, echo_pool=False, encoding='utf-8', convert_unicode=False, **kwargs)¶
- Bases:
-object
SQLAlchemy engine utility
--
-
-
-
clear_engine
()¶
-
-
-
-
-
convert_unicode
¶
- Convert Unicode
-
-
-
-
-
dsn
¶
- DSN: RFC-1738 compliant URL for the database connection
-
-
-
-
-
echo
¶
- Echo SQL?: Log all SQL statements to system logger
-
-
-
-
-
echo_pool
¶
- Echo pool?: Log all pool checkouts/checkins to system logger?
-
-
-
-
-
encoding
¶
- Encoding
-
-
-
-
-
get_engine
(use_pool=True)¶
-
-
-
-
-
name
¶
- Engine name: Keep empty if this engine is the default engine…
-
-
-
-
-
pool_recycle
¶
- Pool recycle time: SQLAlchemy connection recycle time (-1 for none)
-
-
-
-
-
pool_size
¶
- Pool size: SQLAlchemy connections pool size
-
-
-
-
-
use_pool
¶
- Use connections pool?: If ‘no’, collections pooling will be disabled
-
-
-
-
-
-
-class
pyams_alchemy.engine.
ConnectionCleanerThread
(group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)¶
- Bases:
-threading.Thread
Background thread used to clean unused database connections
-Each connection is referenced in CONNECTION_TIMESTAMPS mapping on checkin and is invalidated -if not being used after 5 minutes
--
-
-
-
run
()¶
-
-
-
-
-
timeout
= 300¶
-
-
-
-
-
-
-class
pyams_alchemy.engine.
EnginesVocabulary
(context, **kw)¶
- Bases:
-zope.componentvocabulary.vocabulary.UtilityVocabulary
SQLAlchemy engines vocabulary
--
-
-
-
interface
= <InterfaceClass pyams_alchemy.interfaces.IAlchemyEngineUtility>¶
-
-
-
-
-
nameOnly
= True¶
-
-
-
-
-
-
-class
pyams_alchemy.engine.
PersistentAlchemyEngineUtility
(name='', dsn='', echo=False, use_pool=True, pool_size=25, pool_recycle=-1, echo_pool=False, encoding='utf-8', convert_unicode=False, **kwargs)¶
- Bases:
-persistent.Persistent
,pyams_alchemy.engine.AlchemyEngineUtility
,zope.container.contained.Contained
Persistent implementation of SQLAlchemy engine utility
-
-
-
-
-
pyams_alchemy.engine.
get_engine
(engine, use_pool=True)¶
- Get engine matching given utility name
-
-
-
-
-
pyams_alchemy.engine.
get_session
(engine, join=True, status='active', request=None, alias=None, twophase=True, use_zope_extension=True, use_pool=True)¶
- Get a new SQLALchemy session
-Session is stored in request and in session storage. -See
-get_user_session()
function to get arguments documentation.
-
-
-
-
pyams_alchemy.engine.
get_user_session
(engine, join=True, status='active', request=None, alias=None, twophase=True, use_zope_extension=True, use_pool=True)¶
- Get a new SQLAlchemy session
--
-- - - - -Parameters: --
-
- engine (str) – name of an SQLAlchemy engine session utility; if engine is not given as a string, it is -returned as-is. -
- join (bool) – if True, session is joined to the current Pyramid transaction -
- status (str) – status of the new session; can be STATUS_ACTIVE or STATUS_READONLY -
- request – currently running request -
- alias (str) – alias to use in connections mapping for this session -
- twophase (bool) – if False, session will be isolated and not included into two-phase transactions mechanism -
- use_zope_extension (bool) – if True, use ZopeTransactionExtension scoped session -
- use_pool (bool) – if True, this session will use a pool -
-
-
-
-
pyams_alchemy.engine.
handle_added_engine
(event)¶
- Register new SQLAlchemy engine when added
-
-
-
-
-
pyams_alchemy.engine.
handle_modified_engine
(event)¶
- Clear SQLAlchemy engine volatile attributes when modified
-
-
-
-
-
pyams_alchemy.engine.
handle_pool_checkin
(connection, record)¶
- Pool connection checkin
-Called when a connection returns to the pool. -We apply a timestamp on the connection record to be able to close it automatically -after 5 minutes without being used.
-
-
-
-
-
pyams_alchemy.engine.
handle_pool_checkout
(connection, record, proxy)¶
- Pool connection checkout
-Called when a connection is retrieved from the pool. -If the connection record is already marked, we remove it from the mapping.
-
-
-
-
-
pyams_alchemy.engine.
handle_removed_engine
(event)¶
- Un-register an SQLAlchemy engine when deleted
-
pyams_alchemy.loader module¶
- - -pyams_alchemy.metaconfigure module¶
--
-
-
-
pyams_alchemy.metaconfigure.
engine_directive
(context, name='', dsn='', echo=False, use_pool=True, pool_size=25, pool_recycle=-2, echo_pool=False, encoding='utf-8', convert_unicode=False, **kwargs)¶
-