On Feb 13, 2008, at 12:03 PM, John Keith Hohm wrote:
> > I'm using and loving SQLAlchemy 0.4.3dev_r4136 but I am having a > problem with (drum roll) a legacy database schema. I'm using pyodbc > on Unix. > > The primary keys in a legacy table are alphanumeric and must be > generated by a MSSQL stored procedure which returns a single result > row with a single unnamed char(12). How can I execute this procedure > with SQLAlchemy? > > I tried the obvious session.execute("EXEC sp_new_foo_key").fetchone() > and variations with text() and select() but I always get this error: > > <class 'pyodbc.ProgrammingError'>: Attempt to use a closed cursor. > > The typemap argument to text() looked like it might do what I need, > but I don't see how to use it with the unnamed result column, and I'm > not sure it would actually result in the correct execution method. > > I gather this is because the mssql dialect implements > returns_rows_text() as a regexp matching just SELECT and sp_columns. > SQL Server Profiler shows the statement being executed from SQLAlchemy > as an RPC instead of a SQL batch like when I do the EXEC from SQL > Server Management Studio. that's the issue. we grep for "SELECT"-like statements in order to determine if we can close the cursor immediately. I think adding EXEC to the ms_is_select would fix this. As far as RPC vs. SQL batch that's determined by the DBAPI - we call cursor.execute() as opposed to callproc(), if thats significant. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---