Re: Zope database connectivity

"Dieter Maurer" <[email protected]>
Newsgroups gmane.comp.web.zope.database
Message-ID <[email protected]>
Maciej Wisniowski wrote at 2006-9-23 00:27 +0200:
> > You could recode DA's to close the connection at the end of every
> > transaction and reopen them on demand,
>Seems for me that difference betwen "connect on load"
>and "connect on demand" is in _begin, _finish and
>__init__ methods of TransactionManager (usually defined in db.py
>in specific database adapter).

The bad behaviour is in standard Zope code:

    Shared.DC.ZRDB.Connection.Connection.__setstate__

It connects to the database as soon as the instance is loaded from
ZODB. My modified code looks like:

    def __setstate__(self, state):
        Globals.Persistent.__setstate__(self, state)
        if self.connection_string:
            # DM 2005-06-24: what a stupidity to connect on load!
            #  It should be delayed until the connections is really used.
            #  I do not change this here to not break DAs.
            # DM 2005-06-24: "connect_" in order to protect '_v_' attributes
            #try: self.connect(self.connection_string)
            try: self.connect_(self.connection_string)
            except:
                LOG('Shared.DC.ZRDB.Connection',
                    ERROR,
                    'Error connecting to relational database.',
                    error=exc_info())



-- 
Dieter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.