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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.