[Top][All Lists]
[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
}
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/common/src/dbdrivers/interbase DBdriver.py,
Jason Cater <=