From eda2fc7c04ab003c5ec727ce92e4310519e0a0c2 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Sun, 25 Nov 2007 22:46:22 +0000 Subject: [PATCH] MSSQL/PyODBC no longer has a global set nocount on --- CHANGES | 4 ++++ lib/sqlalchemy/databases/mssql.py | 13 +++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index d453bda38d..007691d3ad 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,10 @@ CHANGES We also copy the instances over without using any events now, so that the 'dirty' list on the new session remains unaffected. +- dialects + + - MSSQL/PyODBC no longer has a global "set nocount on". + 0.4.1 ----- diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index f8c7f23e58..c24e28dfde 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -345,17 +345,10 @@ class MSSQLExecutionContext(default.DefaultExecutionContext): class MSSQLExecutionContext_pyodbc (MSSQLExecutionContext): def pre_exec(self): - """execute "set nocount on" on all connections, as a partial - workaround for multiple result set issues.""" - - if not getattr(self.connection, 'pyodbc_done_nocount', False): - self.connection.execute('SET nocount ON') - self.connection.pyodbc_done_nocount = True - + """where appropriate, issue "select scope_identity()" in the same statement""" super(MSSQLExecutionContext_pyodbc, self).pre_exec() - - # where appropriate, issue "select scope_identity()" in the same statement - if self.compiled.isinsert and self.HASIDENT and (not self.IINSERT) and self.dialect.use_scope_identity: + if self.compiled.isinsert and self.HASIDENT and (not self.IINSERT) \ + and len(self.parameters) == 1 and self.dialect.use_scope_identity: self.statement += "; select scope_identity()" def post_exec(self): -- 2.47.2