[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