[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/common/src/dbdrivers/interbase DBdriver.py
From: |
James Thompson |
Subject: |
gnue/common/src/dbdrivers/interbase DBdriver.py |
Date: |
Tue, 12 Mar 2002 20:12:48 -0500 |
CVSROOT: /cvsroot/gnue
Module name: gnue
Changes by: James Thompson <address@hidden> 02/03/12 20:12:48
Modified files:
common/src/dbdrivers/interbase: DBdriver.py
Log message:
Added contributed interbase driver updates from Bajusz Tamás
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/dbdrivers/interbase/DBdriver.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
Patches:
Index: gnue/common/src/dbdrivers/interbase/DBdriver.py
diff -c gnue/common/src/dbdrivers/interbase/DBdriver.py:1.5
gnue/common/src/dbdrivers/interbase/DBdriver.py:1.6
*** gnue/common/src/dbdrivers/interbase/DBdriver.py:1.5 Thu Jan 10 15:59:18 2002
--- gnue/common/src/dbdrivers/interbase/DBdriver.py Tue Mar 12 20:12:47 2002
***************
*** 23,29 ****
#
# DESCRIPTION:
# Driver to provide access to data via the Kinterbasdb Interbase/Python Driver
! # Requires Kinterbasdb 2.x (http://kinterbasdb.sourceforge.net/)
#
# NOTES:
#
--- 23,29 ----
#
# DESCRIPTION:
# Driver to provide access to data via the Kinterbasdb Interbase/Python Driver
! # Requires Kinterbasdb 3.0_rc3 (http://kinterbasdb.sourceforge.net/)
#
# NOTES:
#
***************
*** 33,43 ****
# dbame= This is the Interbase database to use (required)
#
- #### THIS IS AN UNTESTED DRIVER ####
- #### Any volunteers? ####
! from string import lower
import sys
from gnue.common import GDebug, GDataObjects, GConnections
from gnue.common.dbdrivers._dbsig.DBdriver \
--- 33,41 ----
# dbame= This is the Interbase database to use (required)
#
! from string import lower, rstrip
import sys
from gnue.common import GDebug, GDataObjects, GConnections
from gnue.common.dbdrivers._dbsig.DBdriver \
***************
*** 61,66 ****
--- 59,94 ----
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
+
+ try:
+ rsets = self._cursor.fetchmany()
+ except self._dataObject._DatabaseError, err:
+ rsets = None
+ except:
+ rsets = None
+
+ if rsets and len(rsets):
+ for rs in(rsets):
+ if rs:
+ i = 0
+ dict = {}
+ for f in (rs):
+ dict[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 Interbase_DataObject(DBSIG_DataObject):
***************
*** 97,107 ****
# Return a list of Schema objects
def getSchemaList(self, type=None):
! return []
# Find a schema object with specified name
def getSchemaByName(self, name, type=None):
! return None
def _postConnect(self):
self.triggerExtensions = TriggerExtensions(self._dataConnection)
--- 125,208 ----
# Return a list of Schema objects
def getSchemaList(self, type=None):
!
! # This excludes any system tables and views.
! statement = "select rdb$relation_name, rdb$view_source "+\
! "from rdb$relations " + \
! "where rdb$system_flag=0 " + \
! "order by rdb$relation_name"
!
! cursor = self._dataConnection.cursor()
! cursor.execute(statement)
!
! # TODO: rdb$view_source is null for table and rdb$view_source is not null
for view
! list = []
! for rs in cursor.fetchall():
! list.append(GDataObjects.Schema(attrs={'id':rs[0], 'name':rstrip(rs[0]),
! 'type':'table'},
! getChildSchema=self.__getFieldSchema))
!
! cursor.close()
! return list
# Find a schema object with specified name
def getSchemaByName(self, name, type=None):
!
! statement = "select rdb$relation_name, rdb$view_source "+\
! "from rdb$relations " + \
! "where rdb$relation_name = '%s'" % (name)
!
! cursor = self._dataConnection.cursor()
! cursor.execute(statement)
!
! rs = cursor.fetchone()
! if rs:
! schema = GDataObjects.Schema(attrs={'id':rs[0], 'name':rstrip(rs[0]),
! 'type':'table'},
! getChildSchema=self.__getFieldSchema)
! else:
! schema = None
!
! cursor.close()
! return schema
!
! # 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()
! return list
def _postConnect(self):
self.triggerExtensions = TriggerExtensions(self._dataConnection)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/common/src/dbdrivers/interbase DBdriver.py,
James Thompson <=