[web2py] Re: Exception (trunk) SCOPE_IDENTITY mssql3 legacy table where id is not an identity column

2014-10-27 Thread Tim Richardson


On Monday, 27 October 2014 18:17:10 UTC+11, Tim Richardson wrote:

 I have a table in sqlserver 2008r2 where the ID column is not an identity 
 (but is a unique integer). The ID column is not called ID.
 I am using update_or_insert and in the case of new record I provide the 
 value for the ID column.
 This is web2py trunk. The database adapter is mssql3 

 I am getting an exception in this code in mssql.py (line 155-ish)

 def lastrowid(self,table):
 #self.execute('SELECT @@IDENTITY;')
 self.execute('SELECT SCOPE_IDENTITY();')
 return long(self.cursor.fetchone()[0])

 The exception is 

 type 'exceptions.TypeError' long() argument must be a string or a 
 number, not 'NoneType'
 It is occurring when an insert is happening. The insert is correctly 
 provided a unique ID for the non-identity primary key. 
 This function is not run very often but this bug was not present earlier 
 (not known how much earlier).
  I can bisect it but first I'd like to know if the ID column must be an 
 identity. 


The more I think about this, the more I wonder it was not an error earlier. 
 

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
web2py-users group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[web2py] Re: Exception (trunk) SCOPE_IDENTITY mssql3 legacy table where id is not an identity column

2014-10-27 Thread Niphlod
definitively needs to be an identity to make any insert*() work. And it is 
since the beginning.

On Monday, October 27, 2014 8:42:12 AM UTC+1, Tim Richardson wrote:



 On Monday, 27 October 2014 18:17:10 UTC+11, Tim Richardson wrote:

 I have a table in sqlserver 2008r2 where the ID column is not an identity 
 (but is a unique integer). The ID column is not called ID.
 I am using update_or_insert and in the case of new record I provide the 
 value for the ID column.
 This is web2py trunk. The database adapter is mssql3 

 I am getting an exception in this code in mssql.py (line 155-ish)

 def lastrowid(self,table):
 #self.execute('SELECT @@IDENTITY;')
 self.execute('SELECT SCOPE_IDENTITY();')
 return long(self.cursor.fetchone()[0])

 The exception is 

 type 'exceptions.TypeError' long() argument must be a string or a 
 number, not 'NoneType'
 It is occurring when an insert is happening. The insert is correctly 
 provided a unique ID for the non-identity primary key. 
 This function is not run very often but this bug was not present 
 earlier (not known how much earlier).
  I can bisect it but first I'd like to know if the ID column must be an 
 identity. 


 The more I think about this, the more I wonder it was not an error 
 earlier. 
  The documentation is very clear, in any case. It should be an identity.


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
web2py-users group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.