我有一个Zope / Plone 4.3环境,我们使用z3c.saconfig
在内部产品中配置数据库(Oracle)设置。
我需要将通常的SQLAlchemy池类型从QueuePool
更改为NullPool
。但是,有没有办法使用z3c.saconfig
?
答案 0 :(得分:5)
z3c.saconfig
委托创建SQLAlchemy引擎到IEngineFactory
实用程序;请参阅interface source。
您可以创建自己的子类以注册为local utility。您的子类可以重用现有的实用程序实现,覆盖configuration()
method:
from persistent import Persistent
from z3c.saconfig.utility import EngineFactory
from sqlalchemy.pool import NullPool
class NullPoolEngineFactory(Persistent, EngineFactory)
def configuration(self):
kwargs = self._kw.copy()
kwargs['poolclass'] = NullPool
return self._args, kwargs
以上通过添加poolclass
argument来增加sqlalchemy.create_engine()
函数的参数。
您必须将此实用程序注册为GenericSetup配置文件中的组件:
<?xml version="1.0"?>
<componentregistry>
<utilities>
<utility
interface="z3c.saconfig.interfaces.IEngineFactory"
factory="yourproject.yourmodule.NullPoolEngineFactory"/>
</utilities>
</componentregistry>
运行通用设置配置文件后,会注册该实用程序的持久版本,而不是默认的全局实用程序。