commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r6217 - trunk/gnue-common/src/datasources/drivers/mysql/mysql


From: reinhard
Subject: r6217 - trunk/gnue-common/src/datasources/drivers/mysql/mysql
Date: Thu, 26 Aug 2004 10:37:35 -0500 (CDT)

Author: reinhard
Date: 2004-08-26 10:37:34 -0500 (Thu, 26 Aug 2004)
New Revision: 6217

Removed:
   trunk/gnue-common/src/datasources/drivers/mysql/mysql/Driver.py
Log:
Removed obsolete file.


Deleted: trunk/gnue-common/src/datasources/drivers/mysql/mysql/Driver.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/mysql/mysql/Driver.py     
2004-08-26 14:23:05 UTC (rev 6216)
+++ trunk/gnue-common/src/datasources/drivers/mysql/mysql/Driver.py     
2004-08-26 15:37:34 UTC (rev 6217)
@@ -1,332 +0,0 @@
-#
-# This file is part of GNU Enterprise.
-#
-# GNU Enterprise is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2, or (at your option) any later version.
-#
-# GNU Enterprise is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with program; see the file COPYING. If not,
-# write to the Free Software Foundation, Inc., 59 Temple Place
-# - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Copyright 2000-2004 Free Software Foundation
-#
-# FILE:
-# mysql/DBdriver.py
-#
-# DESCRIPTION:
-# Driver to provide access to data vi MySQL
-#
-# NOTES:
-# Supports transactions if the MySQL server is compiled w/transaction support
-# (which it does NOT by default)
-
-
-import string
-import sys
-import types
-from gnue.common.datasources import GDataObjects, GConditions
-from gnue.common.datasources.drivers.DBSIG2.Driver \
-   import DBSIG_RecordSet, DBSIG_ResultSet, DBSIG_DataObject, \
-          DBSIG_DataObject_SQL, DBSIG_DataObject_Object
-
-try:
-  import MySQLdb
-
-except ImportError, mesg:
-  gDebug (1, mesg)
-  print "-" * 79
-  print o(_("\nCould not load MySQLdb. For MySQL support, please install "
-            "mysql-python 0.9.0 or later from\n"
-            "http://sourceforge.net/projects/mysql-python\n";))
-  print o(u_("Error: %s") % mesg)
-  print "-" * 79
-  sys.exit()
-
-
-
-class MySQL_RecordSet(DBSIG_RecordSet):
-  pass
-
-
-class MySQL_ResultSet(DBSIG_ResultSet): 
-  def __init__(self, dataObject, cursor=None, defaultValues={}, 
masterRecordSet=None): 
-    DBSIG_ResultSet.__init__(self, dataObject, \
-            cursor, defaultValues, masterRecordSet)
-    self._recordSetClass = MySQL_RecordSet
-
-    # Compensate for bug in python mysql drivers older than 0.9.2a2
-    if MySQLdb.__version__ >= '0.9.2a2':
-      self.fetchBugFix = self._cursor.fetchmany
-    else:
-      self.__done = 0
-      self.fetchBugFix = self.__mySqlNeedsLotsOfTLC
-
-  
-  # Compensate for MySQ bug
-  def __mySqlNeedsLotsOfTLC(self):
-    if self.__done:
-      return None
-
-    self.__done = 1
-    return self._cursor.fetchall()
-
-
-  def _loadNextRecord(self):
-    if self._cursor:
-      rs = None
-
-      try:
-        # See __init__ for details
-       rsets = self.fetchBugFix()
-
-      except self._dataObject._connection._DatabaseError, err:
-        raise GDataObjects.ConnectionError, err
-
-      if rsets and len(rsets):
-        for rs in(rsets):
-          if rs:
-            i = 0
-            dict = {}
-            for f in (rs):
-              if self._dataObject._unicodeMode and type(f)==types.StringType:
-                f = unicode(f,self._dataObject._databaseEncoding)
-                
-              dict[string.lower(self._fieldNames[i])] = f
-              i += 1
-            self._cachedRecords.append (self._recordSetClass(parent=self, \
-                                                             initialData=dict))
-          else:
-            return 0
-        return 1
-      else:
-        return 0
-    else:
-     return 0
-
-class MySQL_DataObject(DBSIG_DataObject):
-  def __init__(self):
-    DBSIG_DataObject.__init__(self)
-    self._DatabaseError = MySQLdb.DatabaseError
-    self._resultSetClass = MySQL_ResultSet
-    
-  def connect(self, connectData={}):
-    gDebug (1,"Mysql database driver initializing")
-   
-    # 1. just allow string type username/password 2. None -> ''
-    user   = str(connectData['_username'] or '')
-    passwd = str(connectData['_password'] or '')
-
-    try:
-      self._dataConnection = MySQLdb.connect(user=user,
-                   passwd=passwd,
-                   host=connectData['host'],
-                   db=connectData['dbname'])
-    except self._DatabaseError, value:
-      raise GDataObjects.LoginError, value
-
-    self._beginTransaction()
-    self._postConnect()
-
-
-  def _postConnect(self): 
-    self.triggerExtensions = TriggerExtensions(self._dataConnection)
-
-
-  def _beginTransaction(self):
-    try:
-      self._dataConnection.begin()
-    except: 
-      pass
-
-
-  #
-  # Schema (metadata) functions
-  #
-
-  # Return a list of the types of Schema objects this driver provides
-  def getSchemaTypes(self):
-    return [('table',_('Tables'),1)]
-
-  # Return a list of Schema objects
-  def getSchemaList(self, type=None):
-
-    # TODO: This excludes any system tables and views. Should it?
-    statement = "SHOW TABLES"
-
-    cursor = self._dataConnection.cursor()
-    cursor.execute(statement)
-
-    list = []
-    for rs in cursor.fetchall():
-      list.append(GDataObjects.Schema(attrs={'id':rs[0], 'name':rs[0],
-                         'type':'table',
-                         'primarykey': self.__getPrimaryKey(rs[0])},
-                         getChildSchema=self.__getFieldSchema))
-
-    cursor.close()
-    return list
-
-
-  # Find a schema object with specified name
-  def getSchemaByName(self, name, type=None):
-    statement = "DESCRIBE %s" % (name)
-
-    cursor = self._dataConnection.cursor()
-    cursor.execute(statement)
-
-    rs = cursor.fetchone()
-    if rs:
-      schema = GDataObjects.Schema(attrs={'id':name, 'name':name,
-                           'type':'table',
-                           'primarykey': self.__getPrimaryKey(name,cursor)},
-                           getChildSchema=self.__getFieldSchema)
-    else:
-      schema = None
-
-    cursor.close()
-    return schema
-
-
-  def __getPrimaryKey(self, id, cursor=None):
-    statement = "DESCRIBE %s" % id
-    if not cursor:
-      cursor = self._dataConnection.cursor()
-      close_cursor = 1
-    else:
-      close_cursor = 0
-    cursor.execute(statement)
-
-    lst = []
-    for rs in cursor.fetchall():
-      if rs[3] == 'PRI':
-        lst.append(rs[0])
-
-    if close_cursor:
-      cursor.close()
-
-    return tuple(lst)
-
-  # Get fields for a table
-  def __getFieldSchema(self, parent):
-
-    statement = "DESCRIBE %s" % parent.id
-
-    cursor = self._dataConnection.cursor()
-    cursor.execute(statement)
-
-    list = []
-    for rs in cursor.fetchall():
-
-      nativetype = string.split(string.replace(rs[1],')',''),'(')
-
-
-      attrs={'id': "%s.%s" % (parent.id, rs[0]), 'name': rs[0],
-             'type':'field', 'nativetype': nativetype[0],
-             'required': rs[2] != 'YES'}
-
-      if nativetype[0] in ('int','integer','bigint','mediumint',
-                           'smallint','tinyint','float','real',
-                           'double','decimal'):
-        attrs['datatype']='number'
-      elif nativetype[0] in ('date','time','timestamp','datetime'):
-        attrs['datatype']='date'
-      else:
-        attrs['datatype']='text'
-
-      try:
-        if len(nativetype) == 2:
-          try:
-            ln, prec = nativetype[1].split(',')
-          except:
-            ln = nativetype[1]
-            prec = None
-          attrs['length'] = int(ln.split()[0])
-          if prec != None:
-            attrs['precision'] = int(prec)
-      except ValueError:
-        gDebug (1,'WARNING: mysql native type error: %s' % nativetype)
-
-      if rs[4] not in ('NULL', '0000-00-00 00:00:00','', None):
-        attrs['defaulttype'] = 'constant'
-        attrs['defaultval'] = rs[4]
-
-      if rs[5] == 'auto_increment':
-        attrs['defaulttype'] = 'serial'
-
-
-      list.append(GDataObjects.Schema(attrs=attrs))
-
-    cursor.close()
-    return list
-
-
-
-
-class MySQL_DataObject_Object(MySQL_DataObject, \
-      DBSIG_DataObject_Object):
-
-  def __init__(self):
-    MySQL_DataObject.__init__(self)
-
-  def _buildQuery(self, conditions={},forDetail=None,additionalSQL=""):
-    return DBSIG_DataObject_Object._buildQuery(self, 
conditions,forDetail,additionalSQL)
-
-
-class MySQL_DataObject_SQL(MySQL_DataObject, \
-      DBSIG_DataObject_SQL):
-  def __init__(self):
-    # Call DBSIG init first because MySQL_DataObject needs to overwrite
-    # some of its values
-    DBSIG_DataObject_SQL.__init__(self)
-    MySQL_DataObject.__init__(self)
-
-  def _buildQuery(self, conditions={}):
-    return DBSIG_DataObject_SQL._buildQuery(self, conditions)
-
-
-#
-#  Extensions to Trigger Namespaces
-#  
-class TriggerExtensions: 
-
-  def __init__(self, connection): 
-    self.__connection = connection
-
-  # Return the current date, according to database
-#  def getDate(self): 
-#    pass
-
-  # Return a sequence number from sequence 'name' 
-#  def getSequence(self, name): 
-#    pass
-
-  # Run the SQL statement 'statement'
-#  def sql(self, statement): 
-#    pass
-
-
-
-######################################
-#
-#  The following hashes describe 
-#  this driver's characteristings.
-#
-######################################
-
-#
-#  All datasouce "types" and corresponding DataObject class
-# 
-supportedDataObjects = {
-  'object': MySQL_DataObject_Object,
-  'sql':    MySQL_DataObject_SQL
-}
-
-





reply via email to

[Prev in Thread] Current Thread [Next in Thread]