Update of /cvsroot/sqlobject/SQLObject/SQLObject
In directory sc8-pr-cvs1:/tmp/cvs-serv9410
Modified Files:
Col.py Converters.py DBConnection.py SQLBuilder.py
Log Message:
More sybase support. Table creation, toggle IDENTITY_INSERT if id is passed. Added NumericType converter. Limit is not supported.
Index: Col.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/SQLObject/Col.py,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** Col.py 13 Jan 2004 15:34:37 -0000 1.37
--- Col.py 14 Jan 2004 14:34:28 -0000 1.38
***************
*** 171,175 ****
def _sqlType(self):
if self.customSQLType is None:
! raise ValueError, "Col cannot be used for automatic schema creation (too abstract)"
else:
return self.customSQLType
--- 171,177 ----
def _sqlType(self):
if self.customSQLType is None:
! raise ValueError, ("Col %s (%s) cannot be used for automatic "
! "schema creation (too abstract)" %
! (self.name, self.__class__))
else:
return self.customSQLType
***************
*** 340,343 ****
--- 342,348 ----
return 'INT'
+ def _sybaseType(self):
+ return 'INT'
+
def _firebirdType(self):
return 'INT'
***************
*** 378,381 ****
--- 383,398 ----
return sql
+ def sybaseCreateSQL(self):
+ from SQLObject import findClass
+ sql = SOKeyCol.sybaseCreateSQL(self)
+ other = findClass(self.foreignKey)
+ tName = other._table
+ idName = other._idName
+ reference = ('REFERENCES %(tName)s(%(idName)s) ' %
+ {'tName':tName,
+ 'idName':idName})
+ sql = ' '.join([sql, reference])
+ return sql
+
class ForeignKey(KeyCol):
Index: Converters.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/SQLObject/Converters.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** Converters.py 13 Jan 2004 15:34:37 -0000 1.10
--- Converters.py 14 Jan 2004 14:34:28 -0000 1.11
***************
*** 17,20 ****
--- 17,26 ----
datetime = None
+ try:
+ import Sybase
+ NumericType=Sybase.NumericType
+ except ImportError:
+ NumericType = None
+
if type(1==1) == type(1):
class BOOL:
***************
*** 102,105 ****
--- 108,114 ----
registerConverter(type(0L), IntConverter)
+ if NumericType:
+ registerConverter(NumericType, IntConverter)
+
def BoolConverter(value, db):
if db in ('postgres',):
***************
*** 171,172 ****
--- 180,183 ----
else:
return reprFunc(db)
+
+
Index: DBConnection.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/SQLObject/DBConnection.py,v
retrieving revision 1.61
retrieving revision 1.62
diff -C2 -d -r1.61 -r1.62
*** DBConnection.py 13 Jan 2004 15:37:58 -0000 1.61
--- DBConnection.py 14 Jan 2004 14:34:28 -0000 1.62
***************
*** 807,810 ****
--- 807,813 ----
names = [idName] + names
values = [id] + values
+ c.execute('SET IDENTITY_INSERT %s ON' % table)
+ else:
+ c.execute('SET IDENTITY_INSERT %s OFF' % table)
q = self._insertSQL(table, names, values)
if self.debug:
***************
*** 812,816 ****
c.execute(q)
if id is None:
! id = self.insert_id()
if self.debugOutput:
self.printDebug(conn, id, 'QueryIns', 'result')
--- 815,819 ----
c.execute(q)
if id is None:
! id = self.insert_id(conn)
if self.debugOutput:
self.printDebug(conn, id, 'QueryIns', 'result')
***************
*** 818,826 ****
def _queryAddLimitOffset(self, query, start, end):
! if not start:
! return "%s LIMIT %i" % (query, end)
! if not end:
! return "%s LIMIT %i, -1" % (query, start)
! return "%s LIMIT %i, %i" % (query, start, end-start)
def createColumn(self, soClass, col):
--- 821,826 ----
def _queryAddLimitOffset(self, query, start, end):
! # XXX Sybase doesn't support LIMIT
! return query
def createColumn(self, soClass, col):
***************
*** 828,836 ****
def createIDColumn(self, soClass):
- #return '%s INT PRIMARY KEY AUTO_INCREMENT' % soClass._idName
return '%s NUMERIC(18,0) IDENTITY' % soClass._idName
def joinSQLType(self, join):
! return 'NUMERIC(18,0) NOT NULL' #INT NOT NULL'
SHOW_TABLES="SELECT name FROM sysobjects WHERE type='U'"
--- 828,835 ----
def createIDColumn(self, soClass):
return '%s NUMERIC(18,0) IDENTITY' % soClass._idName
def joinSQLType(self, join):
! return 'NUMERIC(18,0) NOT NULL'
SHOW_TABLES="SELECT name FROM sysobjects WHERE type='U'"
Index: SQLBuilder.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/SQLObject/SQLBuilder.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** SQLBuilder.py 4 Dec 2003 16:46:31 -0000 1.15
--- SQLBuilder.py 14 Jan 2004 14:34:28 -0000 1.16
***************
*** 591,596 ****
for expr in tests.split('\n'):
if not expr.strip(): continue
- print expr
if expr.startswith('>>> '):
expr = expr[4:]
- print repr(eval(expr))
--- 591,594 ----
|