def setUp(cls): from pas.plugins.sqlalchemy.model import Base testing.setUp() # zcml.load_config('meta.zcml', Products.Five) # zcml.load_config('configure.zcml', pas.plugins.sqlalchemy) app = ZopeTestCase.app() # Create our sandbox app.manage_addFolder(SANDBOX_ID) sandbox = app[SANDBOX_ID] # Add a cache manager factory = sandbox.manage_addProduct['StandardCacheManagers'] factory.manage_addRAMCacheManager(CACHE_MANAGER_ID) # Setup the DB connection and PAS instances factory = EngineFactory('sqlite:///:memory:') engine = factory() Base.metadata.bind = engine Base.metadata.create_all(engine) cls.pas = cls.setupPAS(sandbox) utility = GloballyScopedSession(bind=engine, twophase=TEST_TWOPHASE) component.provideUtility(utility, provides=IScopedSession, name="pas.plugins.sqlalchemy") transaction.commit() ZopeTestCase.close(app)
def configureEngine(TEST_DSN='sqlite:///:memory:'): """Utility function for tests to set up an in-memory test database. Returns engine object. """ engine_factory = EngineFactory(TEST_DSN) component.provideUtility(engine_factory, provides=IEngineFactory) scoped_session = GloballyScopedSession() component.provideUtility(scoped_session, provides=IScopedSession) return engine_factory()
def testSetUp(self): super(MemoryDBLayer, self).testSetUp() engine_factory = EngineFactory('sqlite:///:memory:') provideUtility(engine_factory, provides=IEngineFactory, name=u'opengever_db') scoped_session = GloballyScopedSession(engine=u'opengever_db') provideUtility(scoped_session, provides=IScopedSession, name=u'opengever') setup_sql_tables() self.session = create_session()
def setup_memory_database(): """Sets up a fresh in-memory database and activates it globally. """ engine_factory = EngineFactory('sqlite:///:memory:', connect_args={'check_same_thread': False}, poolclass=StaticPool) provideUtility(engine_factory, provides=IEngineFactory, name=u'opengever_db') # keep_session is necessary so that the builders can commit the # transaction multiple times and we can still use the sql objects # without fetching fresh copies. # The session should be closed on test tear down. scoped_session = GloballyScopedSession( engine=u'opengever_db', extension=ZopeTransactionExtension(keep_session=True)) provideUtility(scoped_session, provides=IScopedSession, name=u'opengever')
# -*- coding: utf-8 -*- # Copyright (c) 2007-2011 NovaReto GmbH # [email protected] import os import grok from z3c.saconfig import EngineFactory, GloballyScopedSession from sqlalchemy import Table, MetaData from zope.app.appsetup.product import getProductConfiguration config = getProductConfiguration('database') DSN = config['dsn'] SCHEMA = config.get('schema', 'EDUCUSADAT') engine_factory = EngineFactory(DSN, echo=False) scoped_session = GloballyScopedSession() grok.global_utility(engine_factory, direct=True) grok.global_utility(scoped_session, direct=True) engine = engine_factory() metadata = MetaData(bind=engine) if os.environ.get('ADHOC_TEST') == "True": c1unf1aa = None c1prs1aa = None avika1aa = None zczve1aa = None zckto1aa = None z1vrs1aa = None z1vrs2aa = None
class SPDOEngineFactory(EngineFactory): def configuration(self): urltool = getToolByName(getSite(), 'portal_url') portal = urltool.getPortalObject() try: saconnect = ISQLAlchemyConnectionStrings(portal) dsn = saconnect['spdo'] logger(u"Utilizando configuração local: " + unicode(dsn, 'utf-8')) except (ComponentLookupError, KeyError), e: dsn = DEFAULT_DSN logger(u"Utilizando configuração padrão: " + unicode(dsn, 'utf-8')) return (dsn,),{} SPDOEngineGlobalUtility = EngineFactory(DEFAULT_DSN) provideUtility(SPDOEngineGlobalUtility, provides=IEngineFactory, name=u'spdo_engine') ## GloballyScopedSession - um banco de dados por instancia #SPDOGloballyScopedSession = GloballyScopedSession(u'spdo_engine', extension=ZopeVersionedExtension()) #provideUtility(SPDOGloballyScopedSession, provides=IScopedSession, name=u'spdo_session') def ScopeID(): urltool = getToolByName(getSite(), 'portal_url') obj = urltool.getPortalObject() return '-'.join(obj.getPhysicalPath()[1:]) # SiteScopedSession - um banco de dados por site class SPDOSiteScopedSession(SiteScopedSession): def siteScopeFunc(self): return ScopeID()
3 Metaphysics Philosophy """ import grokcore.component as grok from z3c.saconfig import EngineFactory, GloballyScopedSession from z3c.saconfig.interfaces import IEngineCreatedEvent from sqlalchemy import Column, ForeignKey from sqlalchemy.types import Integer, String from sqlalchemy.orm import relation from megrok import rdb TEST_DSN = 'sqlite:///:memory:' engine_factory = EngineFactory(TEST_DSN) scoped_session = GloballyScopedSession() grok.global_utility(engine_factory, direct=True) grok.global_utility(scoped_session, direct=True) metadata = rdb.MetaData() @grok.subscribe(IEngineCreatedEvent) def setUpDatabase(event): rdb.setupDatabase(metadata) rdb.metadata(metadata)
from xiru.alchemyform.history_meta import ZopeVersionedExtension class AlchemyFormEngineFactory(EngineFactory): def configuration(self): urltool = getToolByName(getSite(), 'portal_url') portal = urltool.getPortalObject() try: saconnect = ISQLAlchemyConnectionStrings(portal) dsn = saconnect['alchemyform'] except (ComponentLookupError, KeyError), e: dsn = DEFAULT_DSN return (dsn, ), {} AlchemyFormEngineGlobalUtility = EngineFactory(DEFAULT_DSN) provideUtility(AlchemyFormEngineGlobalUtility, provides=IEngineFactory, name=u'alchemyform_engine') def ScopeID(): urltool = getToolByName(getSite(), 'portal_url') obj = urltool.getPortalObject() return '-'.join(obj.getPhysicalPath()[1:]) # SiteScopedSession - um banco de dados por site class AlchemyFormSiteScopedSession(SiteScopedSession): def siteScopeFunc(self): return ScopeID()
from z3c.saconfig import EngineFactory # Here you can get the parameters like username and password, database, etc. # Will be processed on zope startup. DEBUG = False username = '******' password = '******' host = '127.0.0.1' port = '3306' database = 'plonesqldemo' database2 = 'plonesqldemo' DemoDBEngine1 = EngineFactory('mysql://%s:%s@%s:%s/%s' % (username, password, host, port, database), echo=DEBUG, convert_unicode=True, pool_recycle=3600) DemoDBSession1 = GloballyScopedSession(engine='demo_engine_1') # This one could be to a different database: DemoDBEngine2 = EngineFactory('mysql://%s:%s@%s:%s/%s' % (username, password, host, port, database2), echo=DEBUG, convert_unicode=True, pool_recycle=3600) DemoDBSession2 = GloballyScopedSession(engine='demo_engine_2')