commit-gnue
[Top][All Lists]
Advanced

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

gnue/common/src/dbdrivers/interbase DBdriver.py


From: Jason Cater
Subject: gnue/common/src/dbdrivers/interbase DBdriver.py
Date: Sat, 27 Apr 2002 18:55:14 -0400

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/04/27 18:55:14

Modified files:
        common/src/dbdrivers/interbase: DBdriver.py 

Log message:
        Improved introspection support [courtesy of btami]

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/dbdrivers/interbase/DBdriver.py.diff?cvsroot=OldCVS&tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: gnue/common/src/dbdrivers/interbase/DBdriver.py
diff -c gnue/common/src/dbdrivers/interbase/DBdriver.py:1.6 
gnue/common/src/dbdrivers/interbase/DBdriver.py:1.7
*** gnue/common/src/dbdrivers/interbase/DBdriver.py:1.6 Tue Mar 12 20:12:47 2002
--- gnue/common/src/dbdrivers/interbase/DBdriver.py     Sat Apr 27 18:55:14 2002
***************
*** 16,29 ****
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2000, 2001 Free Software Foundation
  #
  # FILE:
  # interbase/DBdriver.py
  #
  # DESCRIPTION:
! # Driver to provide access to data via the Kinterbasdb Interbase/Python Driver
! # Requires Kinterbasdb 3.0_rc3 (http://kinterbasdb.sourceforge.net/)
  #
  # NOTES:
  #
--- 16,29 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2000-2002 Free Software Foundation
  #
  # FILE:
  # interbase/DBdriver.py
  #
  # DESCRIPTION:
! # Driver to provide access to data via the Kinterbasdb Interbase/Firebird 
Python Driver
! # Requires Kinterbasdb 3.0 (http://kinterbasdb.sourceforge.net/)
  #
  # NOTES:
  #
***************
*** 59,66 ****
              cursor, defaultValues, masterRecordSet)
      self._recordSetClass = Interbase_RecordSet
  
!   # TODO: Override the base _loadNextRecord as the fetchmany() from the cursor
!   # TODO: returns an exception instead of None.  Not sure wazzup with that.
    def _loadNextRecord(self):
      if self._cursor:
        rs = None
--- 59,66 ----
              cursor, defaultValues, masterRecordSet)
      self._recordSetClass = Interbase_RecordSet
  
!   # Override the base _loadNextRecord as the fetchmany() from the cursor
!   # returns an exception instead of an empty sequence. 
    def _loadNextRecord(self):
      if self._cursor:
        rs = None
***************
*** 117,124 ****
    # Schema (metadata) functions
    #
  
-   # TODO: See postgresql for an example of what these functions do.
- 
    # Return a list of the types of Schema objects this driver provides
    def getSchemaTypes(self):
      return [('view','View',1), ('table','Table',1)]
--- 117,122 ----
***************
*** 169,204 ****
    # Get fields for a table
    def __getFieldSchema(self, parent):
  
!     statement = "select a.rdb$field_name,a.rdb$null_flag,"+\
!                       "c.rdb$type_name,"+\
!                       "b.rdb$field_length, "+\
!                       "b.rdb$field_scale "+\
!                       "from rdb$relation_fields a, rdb$fields b, rdb$types c 
"+\
!                       "where c.rdb$field_name='RDB$FIELD_TYPE' and "+\
!                       "c.rdb$type=b.rdb$field_type and "+\
!                       "b.rdb$field_name=a.rdb$field_source and "+\
!                       "a.rdb$relation_name= '%s'"%(parent.name)
  
      cursor = self._dataConnection.cursor()
      cursor.execute(statement)
  
      list = []
-     for rs in cursor.fetchall():
  
!       nativetype = rstrip(rs[2])
!       
!       attrs={'id': rs[0], 'name': lower(rstrip(rs[0])),
!              'type':'field', 'nativetype': nativetype,
!              'required': rs[1]==1, 'length': rs[3] }
        
!       if nativetype in ('SHORT','LONG','QUAD','FLOAT','DOUBLE'):
          attrs['datatype']='number'
!         attrs['precision'] = rs[4]
!       elif nativetype in ('DATE','TIME','TIMESTAMP'):
          attrs['datatype']='date'
        else:
          attrs['datatype']='text'
  
        list.append(GDataObjects.Schema(attrs=attrs))
  
      cursor.close()
--- 167,223 ----
    # Get fields for a table
    def __getFieldSchema(self, parent):
  
! #    statement = "select a.rdb$field_name,a.rdb$null_flag,"+\
! #                     "c.rdb$type_name,"+\
! #                     "b.rdb$field_length, "+\
! #                     "b.rdb$field_scale "+\
! #                     "from rdb$relation_fields a, rdb$fields b, rdb$types c 
"+\
! #                     "where c.rdb$field_name='RDB$FIELD_TYPE' and "+\
! #                     "c.rdb$type=b.rdb$field_type and "+\
! #                     "b.rdb$field_name=a.rdb$field_source and "+\
! #                     "a.rdb$relation_name= '%s'"%(parent.name)
! 
!     statement = "select * from %s"%(parent.name) + " where (0=1)"
  
      cursor = self._dataConnection.cursor()
      cursor.execute(statement)
  
      list = []
  
! #    for rs in cursor.fetchall():
! #      nativetype = rstrip(rs[2])
! #      
! #      attrs={'id': rs[0], 'name': lower(rstrip(rs[0])),
! #             'type':'field', 'nativetype': nativetype,
! #             'required': rs[1]==1, 'length': rs[3] }
! #      
! #      if nativetype in ('SHORT','LONG','QUAD','FLOAT','DOUBLE'):
! #        attrs['datatype']='number'
! #        attrs['precision'] = rs[4]
! #      elif nativetype in ('DATE','TIME','TIMESTAMP'):
! #        attrs['datatype']='date'
! #      else:
! #        attrs['datatype']='text'
! 
!     for d in cursor.description:
!       nativetype = lower(d[SIG2api.DESCRIPTION_TYPE_CODE].__name__)
        
!       attrs={'id':d[SIG2api.DESCRIPTION_NAME],
!                  'name':d[SIG2api.DESCRIPTION_NAME],
!                'type':'field',
!                'nativetype': nativetype,
!                'required': d[SIG2api.DESCRIPTION_NULL_OK]==0,
!                'length': d[SIG2api.DESCRIPTION_DISPLAY_SIZE]}
! 
!       if nativetype in ('int','float','long'):
          attrs['datatype']='number'
!         attrs['precision']=d[SIG2api.DESCRIPTION_SCALE]
!       elif nativetype == 'datetime':
          attrs['datatype']='date'
        else:
          attrs['datatype']='text'
  
+ 
        list.append(GDataObjects.Schema(attrs=attrs))
  
      cursor.close()
***************
*** 254,257 ****
--- 273,277 ----
    'object': Interbase_DataObject_Object,
    'sql':    Interbase_DataObject_SQL
  }
+ 
  



reply via email to

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