I think I have found the root cause of the problem. I am using a sybase database server of version 15 ("Adaptive Server Enterprise/15.0.3/EBF 17163") But for various reasons we are still using sybase ODBC driver 12.5. If I switch to 15.5, it just works as expected. *A follow-up question**:* ** Says I must stay with driver 12.5, what are the possible workaround for this issue? I think there are at least two possible solutions: A) Use direct query to insert and retrieve @@identity back form the server B) 'hack' the self.dispatch in session to retrieve @@identity and assign it to the 'id' field in flush() event Do they sound plausible? Are there any pointers/resource on how to achieve the above? Cheers
On Thursday, May 10, 2012 7:43:43 AM UTC+10, Anthony Kong wrote: > 1) Yes, I am working with existing table > > 2) The id column is not included in the SQL, which is the expected > behaviour if we want the server to generate value for the IDENTITY column > in sybase/ms-sql > > 3) ok > > Any tracing option I can use to see how SQLA deals with the 'id' column? > > > > On Thursday, May 10, 2012 5:09:59 AM UTC+10, Michael Bayer wrote: >> >> >> On May 9, 2012, at 4:46 PM, Anthony Kong wrote: >> >> >> Hi, Micheal, >> >> Thanks for the reply. I have added autoincrement to the Column definition >> of 'id', like so: >> >> id = Column(Integer, name='id_trade', primary_key=True, >> autoincrement=True) >> >> >> that's fine, but the table has to be created that way in the database >> also, that is, using the IDENTITY keyword explicitly. if you are dealing >> with an existing database, that may not be the case. >> >> >> >> In the log I can see the id column is not included in the INSERT >> statement. I have taken that SQL statement out and run it, and a row can be >> successfully created in the table. >> >> >> that's also fine but is there a value for the primary key column ? or is >> it NULL? >> >> >> >> Do I need to do anything related to reload? I suspect may be the row >> cannot be inserted after all but sqlalchemy does not retrieve @@IDENTITY? >> >> >> the work SQLA does with @@IDENTITY may not be present in the log output >> of SQLAlchemy itself. >> >> -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/GzOcXxqMSk0J. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.