[Checkins] SVN: relstorage/trunk/relstorage/adapters/ Moved a bit of common adapter code to a base class

Shane Hathaway shane at hathawaymix.org
Tue Feb 12 02:29:42 EST 2008


Log message for revision 83757:
  Moved a bit of common adapter code to a base class
  

Changed:
  A   relstorage/trunk/relstorage/adapters/common.py
  U   relstorage/trunk/relstorage/adapters/mysql.py
  U   relstorage/trunk/relstorage/adapters/oracle.py
  U   relstorage/trunk/relstorage/adapters/postgresql.py

-=-
Added: relstorage/trunk/relstorage/adapters/common.py
===================================================================
--- relstorage/trunk/relstorage/adapters/common.py	                        (rev 0)
+++ relstorage/trunk/relstorage/adapters/common.py	2008-02-12 07:29:40 UTC (rev 83757)
@@ -0,0 +1,49 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors.
+# 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.
+#
+##############################################################################
+"""Code common to most adapters."""
+
+import logging
+
+log = logging.getLogger("relstorage.adapters.common")
+
+
+class Adapter(object):
+
+    def _run_script(self, cursor, script, params=()):
+        """Execute a series of statements in the database."""
+        lines = []
+        for line in script.split('\n'):
+            line = line.strip()
+            if not line or line.startswith('--'):
+                continue
+            if line.endswith(';'):
+                line = line[:-1]
+                lines.append(line)
+                stmt = '\n'.join(lines)
+                try:
+                    cursor.execute(stmt, params)
+                except:
+                    log.warning("script statement failed: %s", stmt)
+                    raise
+                lines = []
+            else:
+                lines.append(line)
+        if lines:
+            try:
+                stmt = '\n'.join(lines)
+                cursor.execute(stmt, params)
+            except:
+                log.warning("script statement failed: %s", stmt)
+                raise
+

Modified: relstorage/trunk/relstorage/adapters/mysql.py
===================================================================
--- relstorage/trunk/relstorage/adapters/mysql.py	2008-02-12 00:45:54 UTC (rev 83756)
+++ relstorage/trunk/relstorage/adapters/mysql.py	2008-02-12 07:29:40 UTC (rev 83757)
@@ -53,12 +53,14 @@
 import time
 from ZODB.POSException import ConflictError, StorageError, UndoError
 
-log = logging.getLogger("relstorage.mysql")
+from common import Adapter
 
+log = logging.getLogger("relstorage.adapters.mysql")
+
 commit_lock_timeout = 30
 
 
-class MySQLAdapter(object):
+class MySQLAdapter(Adapter):
     """MySQL adapter for RelStorage."""
 
     def __init__(self, **params):
@@ -153,34 +155,6 @@
         self._run_script(cursor, stmt)
 
 
-    def _run_script(self, cursor, script, params=()):
-        """Execute a series of statements in the database."""
-        lines = []
-        for line in script.split('\n'):
-            line = line.strip()
-            if not line or line.startswith('--'):
-                continue
-            if line.endswith(';'):
-                line = line[:-1]
-                lines.append(line)
-                stmt = '\n'.join(lines)
-                try:
-                    cursor.execute(stmt, params)
-                except:
-                    log.warning("script statement failed: %s", stmt)
-                    raise
-                lines = []
-            else:
-                lines.append(line)
-        if lines:
-            try:
-                stmt = '\n'.join(lines)
-                cursor.execute(stmt, params)
-            except:
-                log.warning("script statement failed: %s", stmt)
-                raise
-
-
     def prepare_schema(self):
         """Create the database schema if it does not already exist."""
         conn, cursor = self.open()
@@ -239,7 +213,7 @@
                 conn.autocommit(False)
             return conn, cursor
         except MySQLdb.OperationalError:
-            log.debug("Unable to connect in %s", repr(self))
+            log.warning("Unable to connect in %s", repr(self))
             raise
 
     def close(self, conn, cursor):
@@ -647,7 +621,7 @@
             state LONGBLOB
         );
 
-        -- Put the state to revert to in temp_undo_state.
+        -- Copy the states to revert to into temp_undo_state.
         -- Some of the states can be null, indicating object uncreation.
         INSERT INTO temp_undo_state
         SELECT undoing.zoid, prev.md5, prev.state

Modified: relstorage/trunk/relstorage/adapters/oracle.py
===================================================================
--- relstorage/trunk/relstorage/adapters/oracle.py	2008-02-12 00:45:54 UTC (rev 83756)
+++ relstorage/trunk/relstorage/adapters/oracle.py	2008-02-12 07:29:40 UTC (rev 83757)
@@ -20,10 +20,12 @@
 import cx_Oracle
 from ZODB.POSException import ConflictError, StorageError, UndoError
 
-log = logging.getLogger("relstorage.oracle")
+from common import Adapter
 
+log = logging.getLogger("relstorage.adapters.oracle")
 
-class OracleAdapter(object):
+
+class OracleAdapter(Adapter):
     """Oracle adapter for RelStorage."""
 
     def __init__(self, user, password, dsn, twophase=False, arraysize=64):
@@ -135,34 +137,6 @@
         self._run_script(cursor, stmt)
 
 
-    def _run_script(self, cursor, script, params=()):
-        """Execute a series of statements in the database."""
-        lines = []
-        for line in script.split('\n'):
-            line = line.strip()
-            if not line or line.startswith('--'):
-                continue
-            if line.endswith(';'):
-                line = line[:-1]
-                lines.append(line)
-                stmt = '\n'.join(lines)
-                try:
-                    cursor.execute(stmt, params)
-                except:
-                    log.warning("script statement failed: %s", stmt)
-                    raise
-                lines = []
-            else:
-                lines.append(line)
-        if lines:
-            try:
-                stmt = '\n'.join(lines)
-                cursor.execute(stmt, params)
-            except:
-                log.warning("script statement failed: %s", stmt)
-                raise
-
-
     def prepare_schema(self):
         """Create the database schema if it does not already exist."""
         conn, cursor = self.open()
@@ -225,7 +199,7 @@
             return conn, cursor
 
         except cx_Oracle.OperationalError:
-            log.error("Unable to connect to DSN %s", self._params[2])
+            log.warning("Unable to connect to DSN %s", self._params[2])
             raise
 
     def close(self, conn, cursor):

Modified: relstorage/trunk/relstorage/adapters/postgresql.py
===================================================================
--- relstorage/trunk/relstorage/adapters/postgresql.py	2008-02-12 00:45:54 UTC (rev 83756)
+++ relstorage/trunk/relstorage/adapters/postgresql.py	2008-02-12 07:29:40 UTC (rev 83757)
@@ -18,9 +18,11 @@
 import psycopg2, psycopg2.extensions
 from ZODB.POSException import ConflictError, StorageError, UndoError
 
-log = logging.getLogger("relstorage.postgresql")
+from common import Adapter
 
+log = logging.getLogger("relstorage.adapters.postgresql")
 
+
 # Notes about adapters:
 #
 # An adapter must not hold a connection, cursor, or database state, because
@@ -29,7 +31,7 @@
 # All OID and TID values are integers, not binary strings, except as noted.
 
 
-class PostgreSQLAdapter(object):
+class PostgreSQLAdapter(Adapter):
     """PostgreSQL adapter for RelStorage."""
 
     def __init__(self, dsn='', twophase=False):
@@ -184,7 +186,7 @@
             cursor = conn.cursor()
             cursor.arraysize = 64
         except psycopg2.OperationalError:
-            log.debug("Unable to connect in %s", repr(self))
+            log.warning("Unable to connect in %s", repr(self))
             raise
         return conn, cursor
 



More information about the Checkins mailing list