#
# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
__docformat__ = 'restructuredtext'
# import standard library
# import interfaces
from zope.interface import Interface
# import packages
from zope.schema import TextLine, Bool, Int, Choice
from pyams_alchemy import _
REQUEST_SESSION_KEY = 'pyams_alchemy.session'
[docs]class IAlchemyEngineUtility(Interface):
"""SQLALchemy engine definition interface"""
name = TextLine(title=_("Engine name"),
description=_("Keep empty if this engine is the default engine..."),
required=False,
default='')
dsn = TextLine(title=_('DSN'),
description=_('RFC-1738 compliant URL for the database connection'),
required=True,
default=u'sqlite://')
echo = Bool(title=_('Echo SQL?'),
description=_("Log all SQL statements to system logger"),
required=True,
default=False)
use_pool = Bool(title=_("Use connections pool?"),
description=_("If 'no', collections pooling will be disabled"),
required=True,
default=True)
pool_size = Int(title=_("Pool size"),
description=_("SQLAlchemy connections pool size"),
required=False,
default=25)
pool_recycle = Int(title=_("Pool recycle time"),
description=_("SQLAlchemy connection recycle time (-1 for none)"),
required=False,
default=-1)
echo_pool = Bool(title=_("Echo pool?"),
description=_("Log all pool checkouts/checkins to system logger?"),
required=True,
default=False)
encoding = Choice(title=_('Encoding'),
required=True,
vocabulary='PyAMS encodings',
default='utf-8')
convert_unicode = Bool(title=_('Convert Unicode'),
required=True,
default=False)
def get_engine(self, use_pool=True):
"""Get SQLAlchemy engine"""
def clear_engine(self):
"""Remove inner volatile attributes when utility properties are modified"""