On Tue, Sep 12, 2017 at 2:54 PM, Dirk Biesinger <dirk.biesin...@gmail.com> wrote: > nope, same result
using raw pyodbc you don't have that problem? pyodbc would be screwing up here if it's in autocommit mode yet connection.rollback() is doing something. please try patching as follows: diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py index c6368f969..22adafa03 100644 --- a/lib/sqlalchemy/dialects/mssql/pyodbc.py +++ b/lib/sqlalchemy/dialects/mssql/pyodbc.py @@ -289,4 +289,8 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect): version.append(n) return tuple(version) + def do_rollback(self, connection): + pass + + dialect = MSDialect_pyodbc this is not a solution but a new feature would need to be added to the dialect to force absolutely no rollback() calls, however pyodbc should not need this if it's in autocommit. > > P.S. that is why I try to always give feedback once a solution is found. > There will be someone chasing the same problem. > > On Tue, Sep 12, 2017 at 11:51 AM, Dirk Biesinger <dirk.biesin...@gmail.com> > wrote: >> >> I have this event listener already in the code (it's active). >> >> I'll give the ?autocommit=True in the create_engine a shot as well. >> >> >> On Tue, Sep 12, 2017 at 11:38 AM, Mike Bayer <mike...@zzzcomputing.com> >> wrote: >>> >>> On Tue, Sep 12, 2017 at 1:56 PM, Dirk Biesinger >>> <dirk.biesin...@gmail.com> wrote: >>> > when executing the engine.connect() with pool_reset_on_return=None set >>> >>> OK there's a do_rollback in there that isn't controlled by this. So >>> let's instead use the event hook that was on the issue to force no >>> transactions: >>> >>> from sqlalchemy import create_engine, event >>> >>> engine = create_engine("mssql+pyodbc://...") >>> >>> >>> @event.listens_for(engine, "connect") >>> def _set_autocommit(dbapi_connection, connection_record): >>> dbapi_connection.autocommit = True >>> >>> >>> This is where the original poster fell silent, which tends to >>> correlate to, "it's fixed". (note if this person had replied to my >>> message, we would not have to have this long email thread now. ) >>> >>> I believe you can get the same result like this too: >>> >>> engine = create_engine("mssql+pyodbc://...?autocommit=true") >>> >>> >>> >>> >>> > >>> > I get this error stack: >>> > >>> > 2017-09-12 17:53:37,807 INFO sqlalchemy.engine.base.Engine SELECT >>> > SERVERPROPERTY('ProductVersion') >>> > 2017-09-12 17:53:37,808 INFO sqlalchemy.engine.base.Engine () >>> > 2017-09-12 17:53:37,849 INFO sqlalchemy.engine.base.Engine SELECT >>> > schema_name() >>> > 2017-09-12 17:53:37,850 INFO sqlalchemy.engine.base.Engine () >>> > 2017-09-12 17:53:38,182 INFO sqlalchemy.engine.base.Engine SELECT >>> > CAST('test >>> > plain returns' AS VARCHAR(60)) AS anon_1 >>> > 2017-09-12 17:53:38,183 INFO sqlalchemy.engine.base.Engine () >>> > 2017-09-12 17:53:38,230 INFO sqlalchemy.engine.base.Engine SELECT >>> > CAST('test >>> > unicode returns' AS NVARCHAR(60)) AS anon_1 >>> > 2017-09-12 17:53:38,231 INFO sqlalchemy.engine.base.Engine () >>> > >>> > --------------------------------------------------------------------------- >>> > Empty Traceback (most recent call >>> > last) >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _do_get(self) >>> > 1121 wait = use_overflow and self._overflow >= >>> > self._max_overflow >>> > -> 1122 return self._pool.get(wait, self._timeout) >>> > 1123 except sqla_queue.Empty: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/queue.py >>> > in get(self, block, timeout) >>> > 144 if self._empty(): >>> > --> 145 raise Empty >>> > 146 elif timeout is None: >>> > >>> > Empty: >>> > >>> > During handling of the above exception, another exception occurred: >>> > >>> > ProgrammingError Traceback (most recent call >>> > last) >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in _wrap_pool_connect(self, fn, connection) >>> > 2146 try: >>> > -> 2147 return fn() >>> > 2148 except dialect.dbapi.Error as e: >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > unique_connection(self) >>> > 327 """ >>> > --> 328 return _ConnectionFairy._checkout(self) >>> > 329 >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _checkout(cls, pool, threadconns, fairy) >>> > 765 if not fairy: >>> > --> 766 fairy = _ConnectionRecord.checkout(pool) >>> > 767 >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > checkout(cls, pool) >>> > 515 def checkout(cls, pool): >>> > --> 516 rec = pool._do_get() >>> > 517 try: >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _do_get(self) >>> > 1137 with util.safe_reraise(): >>> > -> 1138 self._dec_overflow() >>> > 1139 else: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> > in __exit__(self, type_, value, traceback) >>> > 65 if not self.warn_only: >>> > ---> 66 compat.reraise(exc_type, exc_value, exc_tb) >>> > 67 else: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> > in reraise(tp, value, tb, cause) >>> > 186 raise value.with_traceback(tb) >>> > --> 187 raise value >>> > 188 >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _do_get(self) >>> > 1134 try: >>> > -> 1135 return self._create_connection() >>> > 1136 except: >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _create_connection(self) >>> > 332 >>> > --> 333 return _ConnectionRecord(self) >>> > 334 >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > __init__(self, pool, connect) >>> > 460 if connect: >>> > --> 461 self.__connect(first_connect_check=True) >>> > 462 self.finalize_callback = deque() >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > __connect(self, first_connect_check) >>> > 660 for_modify(pool.dispatch).\ >>> > --> 661 exec_once(self.connection, self) >>> > 662 if pool.dispatch.connect: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> > in exec_once(self, *args, **kw) >>> > 245 try: >>> > --> 246 self(*args, **kw) >>> > 247 finally: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> > in __call__(self, *args, **kw) >>> > 255 for fn in self.listeners: >>> > --> 256 fn(*args, **kw) >>> > 257 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> > in go(*arg, **kw) >>> > 1330 once_fn = once.pop() >>> > -> 1331 return once_fn(*arg, **kw) >>> > 1332 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py >>> > in first_connect(dbapi_connection, connection_record) >>> > 180 c._execution_options = util.immutabledict() >>> > --> 181 dialect.initialize(c) >>> > 182 event.listen(pool, 'first_connect', first_connect, >>> > once=True) >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/connectors/pyodbc.py >>> > in initialize(self, connection) >>> > 164 # run other initialization which asks for user name, >>> > etc. >>> > --> 165 super(PyODBCConnector, self).initialize(connection) >>> > 166 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py >>> > in initialize(self, connection) >>> > 1741 def initialize(self, connection): >>> > -> 1742 super(MSDialect, self).initialize(connection) >>> > 1743 self._setup_version_attributes() >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> > in initialize(self, connection) >>> > 265 >>> > --> 266 self.do_rollback(connection.connection) >>> > 267 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> > in do_rollback(self, dbapi_connection) >>> > 439 def do_rollback(self, dbapi_connection): >>> > --> 440 dbapi_connection.rollback() >>> > 441 >>> > >>> > ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 13 for SQL >>> > Server][SQL Server]111214;An attempt to complete a transaction has >>> > failed. >>> > No corresponding transaction found. (111214) (SQLEndTran)') >>> > >>> > The above exception was the direct cause of the following exception: >>> > >>> > ProgrammingError Traceback (most recent call >>> > last) >>> > <ipython-input-13-a41175de1d5e> in <module>() >>> > 16 dbapi_connection.autocommit = True >>> > 17 #cnxn = pyodbc.connect(connection_str) >>> > ---> 18 engn.connect() >>> > 19 #df.to_sql(tbl_server_out, engn, if_exists='append', >>> > index=False) >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in connect(self, **kwargs) >>> > 2089 """ >>> > 2090 >>> > -> 2091 return self._connection_cls(self, **kwargs) >>> > 2092 >>> > 2093 def contextual_connect(self, close_with_result=False, >>> > **kwargs): >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in __init__(self, engine, connection, close_with_result, _branch_from, >>> > _execution_options, _dispatch, _has_events) >>> > 88 else: >>> > 89 self.__connection = connection \ >>> > ---> 90 if connection is not None else >>> > engine.raw_connection() >>> > 91 self.__transaction = None >>> > 92 self.__savepoint_seq = 0 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in raw_connection(self, _connection) >>> > 2175 """ >>> > 2176 return self._wrap_pool_connect( >>> > -> 2177 self.pool.unique_connection, _connection) >>> > 2178 >>> > 2179 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in _wrap_pool_connect(self, fn, connection) >>> > 2149 if connection is None: >>> > 2150 >>> > Connection._handle_dbapi_exception_noconnection( >>> > -> 2151 e, dialect, self) >>> > 2152 else: >>> > 2153 util.reraise(*sys.exc_info()) >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in _handle_dbapi_exception_noconnection(cls, e, dialect, engine) >>> > 1463 util.raise_from_cause( >>> > 1464 sqlalchemy_exception, >>> > -> 1465 exc_info >>> > 1466 ) >>> > 1467 else: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> > in raise_from_cause(exception, exc_info) >>> > 201 exc_type, exc_value, exc_tb = exc_info >>> > 202 cause = exc_value if exc_value is not exception else None >>> > --> 203 reraise(type(exception), exception, tb=exc_tb, cause=cause) >>> > 204 >>> > 205 if py3k: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> > in reraise(tp, value, tb, cause) >>> > 184 value.__cause__ = cause >>> > 185 if value.__traceback__ is not tb: >>> > --> 186 raise value.with_traceback(tb) >>> > 187 raise value >>> > 188 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> > in _wrap_pool_connect(self, fn, connection) >>> > 2145 dialect = self.dialect >>> > 2146 try: >>> > -> 2147 return fn() >>> > 2148 except dialect.dbapi.Error as e: >>> > 2149 if connection is None: >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > unique_connection(self) >>> > 326 >>> > 327 """ >>> > --> 328 return _ConnectionFairy._checkout(self) >>> > 329 >>> > 330 def _create_connection(self): >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _checkout(cls, pool, threadconns, fairy) >>> > 764 def _checkout(cls, pool, threadconns=None, fairy=None): >>> > 765 if not fairy: >>> > --> 766 fairy = _ConnectionRecord.checkout(pool) >>> > 767 >>> > 768 fairy._pool = pool >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > checkout(cls, pool) >>> > 514 @classmethod >>> > 515 def checkout(cls, pool): >>> > --> 516 rec = pool._do_get() >>> > 517 try: >>> > 518 dbapi_connection = rec.get_connection() >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _do_get(self) >>> > 1136 except: >>> > 1137 with util.safe_reraise(): >>> > -> 1138 self._dec_overflow() >>> > 1139 else: >>> > 1140 return self._do_get() >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> > in __exit__(self, type_, value, traceback) >>> > 64 self._exc_info = None # remove potential circular >>> > references >>> > 65 if not self.warn_only: >>> > ---> 66 compat.reraise(exc_type, exc_value, exc_tb) >>> > 67 else: >>> > 68 if not compat.py3k and self._exc_info and >>> > self._exc_info[1]: >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> > in reraise(tp, value, tb, cause) >>> > 185 if value.__traceback__ is not tb: >>> > 186 raise value.with_traceback(tb) >>> > --> 187 raise value >>> > 188 >>> > 189 else: >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _do_get(self) >>> > 1133 if self._inc_overflow(): >>> > 1134 try: >>> > -> 1135 return self._create_connection() >>> > 1136 except: >>> > 1137 with util.safe_reraise(): >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > _create_connection(self) >>> > 331 """Called by subclasses to create a new >>> > ConnectionRecord.""" >>> > 332 >>> > --> 333 return _ConnectionRecord(self) >>> > 334 >>> > 335 def _invalidate(self, connection, exception=None): >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > __init__(self, pool, connect) >>> > 459 self.__pool = pool >>> > 460 if connect: >>> > --> 461 self.__connect(first_connect_check=True) >>> > 462 self.finalize_callback = deque() >>> > 463 >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> > in >>> > __connect(self, first_connect_check) >>> > 659 pool.dispatch.first_connect.\ >>> > 660 for_modify(pool.dispatch).\ >>> > --> 661 exec_once(self.connection, self) >>> > 662 if pool.dispatch.connect: >>> > 663 pool.dispatch.connect(self.connection, self) >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> > in exec_once(self, *args, **kw) >>> > 244 if not self._exec_once: >>> > 245 try: >>> > --> 246 self(*args, **kw) >>> > 247 finally: >>> > 248 self._exec_once = True >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> > in __call__(self, *args, **kw) >>> > 254 fn(*args, **kw) >>> > 255 for fn in self.listeners: >>> > --> 256 fn(*args, **kw) >>> > 257 >>> > 258 def __len__(self): >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> > in go(*arg, **kw) >>> > 1329 if once: >>> > 1330 once_fn = once.pop() >>> > -> 1331 return once_fn(*arg, **kw) >>> > 1332 >>> > 1333 return go >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py >>> > in first_connect(dbapi_connection, connection_record) >>> > 179 _has_events=False) >>> > 180 c._execution_options = util.immutabledict() >>> > --> 181 dialect.initialize(c) >>> > 182 event.listen(pool, 'first_connect', first_connect, >>> > once=True) >>> > 183 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/connectors/pyodbc.py >>> > in initialize(self, connection) >>> > 163 >>> > 164 # run other initialization which asks for user name, >>> > etc. >>> > --> 165 super(PyODBCConnector, self).initialize(connection) >>> > 166 >>> > 167 def _dbapi_version(self): >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py >>> > in initialize(self, connection) >>> > 1740 >>> > 1741 def initialize(self, connection): >>> > -> 1742 super(MSDialect, self).initialize(connection) >>> > 1743 self._setup_version_attributes() >>> > 1744 >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> > in initialize(self, connection) >>> > 264 self._description_decoder = >>> > self.description_encoding = >>> > None >>> > 265 >>> > --> 266 self.do_rollback(connection.connection) >>> > 267 >>> > 268 def on_connect(self): >>> > >>> > >>> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> > in do_rollback(self, dbapi_connection) >>> > 438 >>> > 439 def do_rollback(self, dbapi_connection): >>> > --> 440 dbapi_connection.rollback() >>> > 441 >>> > 442 def do_commit(self, dbapi_connection): >>> > >>> > ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] >>> > [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]111214;An attempt >>> > to >>> > complete a transaction has failed. No corresponding transaction found. >>> > (111214) (SQLEndTran)') >>> > >>> > On Tue, Sep 12, 2017 at 10:52 AM, Mike Bayer <mike...@zzzcomputing.com> >>> > wrote: >>> >> >>> >> On Tue, Sep 12, 2017 at 1:14 PM, dirk.biesinger >>> >> <dirk.biesin...@gmail.com> wrote: >>> >> > Mike, >>> >> > >>> >> > I'll post two stacks: >>> >> > the first one is just calling the engine.connect(): >>> >> >>> >> yup different error than before. >>> >> >>> >> Add pool_reset_on_return=None to your create_engine: >>> >> >>> >> e = create_engine(...., pool_reset_on_return=None) >>> >> >>> >> then try again. >>> >> >>> >> >>> >> >>> >> > the second one (look for a row of #####) is when calling the >>> >> > df.to_sql() >>> >> > function. >>> >> > >>> >> > 2017-09-12 17:08:23,572 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > SERVERPROPERTY('ProductVersion') >>> >> > 2017-09-12 17:08:23,573 INFO sqlalchemy.engine.base.Engine () >>> >> > 2017-09-12 17:08:23,627 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > schema_name() >>> >> > 2017-09-12 17:08:23,627 INFO sqlalchemy.engine.base.Engine () >>> >> > 2017-09-12 17:08:24,056 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > CAST('test >>> >> > plain returns' AS VARCHAR(60)) AS anon_1 >>> >> > 2017-09-12 17:08:24,057 INFO sqlalchemy.engine.base.Engine () >>> >> > 2017-09-12 17:08:24,117 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > CAST('test >>> >> > unicode returns' AS NVARCHAR(60)) AS anon_1 >>> >> > 2017-09-12 17:08:24,117 INFO sqlalchemy.engine.base.Engine () >>> >> > >>> >> > >>> >> > --------------------------------------------------------------------------- >>> >> > Empty Traceback (most recent >>> >> > call >>> >> > last) >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1121 wait = use_overflow and self._overflow >= >>> >> > self._max_overflow >>> >> > -> 1122 return self._pool.get(wait, self._timeout) >>> >> > 1123 except sqla_queue.Empty: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/queue.py >>> >> > in get(self, block, timeout) >>> >> > 144 if self._empty(): >>> >> > --> 145 raise Empty >>> >> > 146 elif timeout is None: >>> >> > >>> >> > Empty: >>> >> > >>> >> > During handling of the above exception, another exception occurred: >>> >> > >>> >> > ProgrammingError Traceback (most recent >>> >> > call >>> >> > last) >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _wrap_pool_connect(self, fn, connection) >>> >> > 2146 try: >>> >> > -> 2147 return fn() >>> >> > 2148 except dialect.dbapi.Error as e: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > unique_connection(self) >>> >> > 327 """ >>> >> > --> 328 return _ConnectionFairy._checkout(self) >>> >> > 329 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _checkout(cls, pool, threadconns, fairy) >>> >> > 765 if not fairy: >>> >> > --> 766 fairy = _ConnectionRecord.checkout(pool) >>> >> > 767 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > checkout(cls, pool) >>> >> > 515 def checkout(cls, pool): >>> >> > --> 516 rec = pool._do_get() >>> >> > 517 try: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1137 with util.safe_reraise(): >>> >> > -> 1138 self._dec_overflow() >>> >> > 1139 else: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in __exit__(self, type_, value, traceback) >>> >> > 65 if not self.warn_only: >>> >> > ---> 66 compat.reraise(exc_type, exc_value, exc_tb) >>> >> > 67 else: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in reraise(tp, value, tb, cause) >>> >> > 186 raise value.with_traceback(tb) >>> >> > --> 187 raise value >>> >> > 188 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1134 try: >>> >> > -> 1135 return self._create_connection() >>> >> > 1136 except: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _create_connection(self) >>> >> > 332 >>> >> > --> 333 return _ConnectionRecord(self) >>> >> > 334 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __init__(self, pool, connect) >>> >> > 460 if connect: >>> >> > --> 461 self.__connect(first_connect_check=True) >>> >> > 462 self.finalize_callback = deque() >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __connect(self, first_connect_check) >>> >> > 660 for_modify(pool.dispatch).\ >>> >> > --> 661 exec_once(self.connection, self) >>> >> > 662 if pool.dispatch.connect: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in exec_once(self, *args, **kw) >>> >> > 245 try: >>> >> > --> 246 self(*args, **kw) >>> >> > 247 finally: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in __call__(self, *args, **kw) >>> >> > 255 for fn in self.listeners: >>> >> > --> 256 fn(*args, **kw) >>> >> > 257 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in go(*arg, **kw) >>> >> > 1330 once_fn = once.pop() >>> >> > -> 1331 return once_fn(*arg, **kw) >>> >> > 1332 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py >>> >> > in first_connect(dbapi_connection, connection_record) >>> >> > 180 c._execution_options = util.immutabledict() >>> >> > --> 181 dialect.initialize(c) >>> >> > 182 event.listen(pool, 'first_connect', >>> >> > first_connect, >>> >> > once=True) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/connectors/pyodbc.py >>> >> > in initialize(self, connection) >>> >> > 164 # run other initialization which asks for user name, >>> >> > etc. >>> >> > --> 165 super(PyODBCConnector, self).initialize(connection) >>> >> > 166 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py >>> >> > in initialize(self, connection) >>> >> > 1741 def initialize(self, connection): >>> >> > -> 1742 super(MSDialect, self).initialize(connection) >>> >> > 1743 self._setup_version_attributes() >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in initialize(self, connection) >>> >> > 265 >>> >> > --> 266 self.do_rollback(connection.connection) >>> >> > 267 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in do_rollback(self, dbapi_connection) >>> >> > 439 def do_rollback(self, dbapi_connection): >>> >> > --> 440 dbapi_connection.rollback() >>> >> > 441 >>> >> > >>> >> > ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 13 for >>> >> > SQL >>> >> > Server][SQL Server]111214;An attempt to complete a transaction has >>> >> > failed. >>> >> > No corresponding transaction found. (111214) (SQLEndTran)') >>> >> > >>> >> > The above exception was the direct cause of the following exception: >>> >> > >>> >> > ProgrammingError Traceback (most recent >>> >> > call >>> >> > last) >>> >> > <ipython-input-10-bd43083eb2bb> in <module>() >>> >> > 16 dbapi_connection.autocommit = True >>> >> > 17 #cnxn = pyodbc.connect(connection_str) >>> >> > ---> 18 engn.connect() >>> >> > 19 #df.to_sql(tbl_server_out, engn, if_exists='append', >>> >> > index=False) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in connect(self, **kwargs) >>> >> > 2089 """ >>> >> > 2090 >>> >> > -> 2091 return self._connection_cls(self, **kwargs) >>> >> > 2092 >>> >> > 2093 def contextual_connect(self, close_with_result=False, >>> >> > **kwargs): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in __init__(self, engine, connection, close_with_result, >>> >> > _branch_from, >>> >> > _execution_options, _dispatch, _has_events) >>> >> > 88 else: >>> >> > 89 self.__connection = connection \ >>> >> > ---> 90 if connection is not None else >>> >> > engine.raw_connection() >>> >> > 91 self.__transaction = None >>> >> > 92 self.__savepoint_seq = 0 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in raw_connection(self, _connection) >>> >> > 2175 """ >>> >> > 2176 return self._wrap_pool_connect( >>> >> > -> 2177 self.pool.unique_connection, _connection) >>> >> > 2178 >>> >> > 2179 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _wrap_pool_connect(self, fn, connection) >>> >> > 2149 if connection is None: >>> >> > 2150 >>> >> > Connection._handle_dbapi_exception_noconnection( >>> >> > -> 2151 e, dialect, self) >>> >> > 2152 else: >>> >> > 2153 util.reraise(*sys.exc_info()) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _handle_dbapi_exception_noconnection(cls, e, dialect, engine) >>> >> > 1463 util.raise_from_cause( >>> >> > 1464 sqlalchemy_exception, >>> >> > -> 1465 exc_info >>> >> > 1466 ) >>> >> > 1467 else: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in raise_from_cause(exception, exc_info) >>> >> > 201 exc_type, exc_value, exc_tb = exc_info >>> >> > 202 cause = exc_value if exc_value is not exception else >>> >> > None >>> >> > --> 203 reraise(type(exception), exception, tb=exc_tb, >>> >> > cause=cause) >>> >> > 204 >>> >> > 205 if py3k: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in reraise(tp, value, tb, cause) >>> >> > 184 value.__cause__ = cause >>> >> > 185 if value.__traceback__ is not tb: >>> >> > --> 186 raise value.with_traceback(tb) >>> >> > 187 raise value >>> >> > 188 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _wrap_pool_connect(self, fn, connection) >>> >> > 2145 dialect = self.dialect >>> >> > 2146 try: >>> >> > -> 2147 return fn() >>> >> > 2148 except dialect.dbapi.Error as e: >>> >> > 2149 if connection is None: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > unique_connection(self) >>> >> > 326 >>> >> > 327 """ >>> >> > --> 328 return _ConnectionFairy._checkout(self) >>> >> > 329 >>> >> > 330 def _create_connection(self): >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _checkout(cls, pool, threadconns, fairy) >>> >> > 764 def _checkout(cls, pool, threadconns=None, fairy=None): >>> >> > 765 if not fairy: >>> >> > --> 766 fairy = _ConnectionRecord.checkout(pool) >>> >> > 767 >>> >> > 768 fairy._pool = pool >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > checkout(cls, pool) >>> >> > 514 @classmethod >>> >> > 515 def checkout(cls, pool): >>> >> > --> 516 rec = pool._do_get() >>> >> > 517 try: >>> >> > 518 dbapi_connection = rec.get_connection() >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1136 except: >>> >> > 1137 with util.safe_reraise(): >>> >> > -> 1138 self._dec_overflow() >>> >> > 1139 else: >>> >> > 1140 return self._do_get() >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in __exit__(self, type_, value, traceback) >>> >> > 64 self._exc_info = None # remove potential >>> >> > circular >>> >> > references >>> >> > 65 if not self.warn_only: >>> >> > ---> 66 compat.reraise(exc_type, exc_value, exc_tb) >>> >> > 67 else: >>> >> > 68 if not compat.py3k and self._exc_info and >>> >> > self._exc_info[1]: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in reraise(tp, value, tb, cause) >>> >> > 185 if value.__traceback__ is not tb: >>> >> > 186 raise value.with_traceback(tb) >>> >> > --> 187 raise value >>> >> > 188 >>> >> > 189 else: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1133 if self._inc_overflow(): >>> >> > 1134 try: >>> >> > -> 1135 return self._create_connection() >>> >> > 1136 except: >>> >> > 1137 with util.safe_reraise(): >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _create_connection(self) >>> >> > 331 """Called by subclasses to create a new >>> >> > ConnectionRecord.""" >>> >> > 332 >>> >> > --> 333 return _ConnectionRecord(self) >>> >> > 334 >>> >> > 335 def _invalidate(self, connection, exception=None): >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __init__(self, pool, connect) >>> >> > 459 self.__pool = pool >>> >> > 460 if connect: >>> >> > --> 461 self.__connect(first_connect_check=True) >>> >> > 462 self.finalize_callback = deque() >>> >> > 463 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __connect(self, first_connect_check) >>> >> > 659 pool.dispatch.first_connect.\ >>> >> > 660 for_modify(pool.dispatch).\ >>> >> > --> 661 exec_once(self.connection, self) >>> >> > 662 if pool.dispatch.connect: >>> >> > 663 pool.dispatch.connect(self.connection, self) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in exec_once(self, *args, **kw) >>> >> > 244 if not self._exec_once: >>> >> > 245 try: >>> >> > --> 246 self(*args, **kw) >>> >> > 247 finally: >>> >> > 248 self._exec_once = True >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in __call__(self, *args, **kw) >>> >> > 254 fn(*args, **kw) >>> >> > 255 for fn in self.listeners: >>> >> > --> 256 fn(*args, **kw) >>> >> > 257 >>> >> > 258 def __len__(self): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in go(*arg, **kw) >>> >> > 1329 if once: >>> >> > 1330 once_fn = once.pop() >>> >> > -> 1331 return once_fn(*arg, **kw) >>> >> > 1332 >>> >> > 1333 return go >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py >>> >> > in first_connect(dbapi_connection, connection_record) >>> >> > 179 _has_events=False) >>> >> > 180 c._execution_options = util.immutabledict() >>> >> > --> 181 dialect.initialize(c) >>> >> > 182 event.listen(pool, 'first_connect', >>> >> > first_connect, >>> >> > once=True) >>> >> > 183 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/connectors/pyodbc.py >>> >> > in initialize(self, connection) >>> >> > 163 >>> >> > 164 # run other initialization which asks for user name, >>> >> > etc. >>> >> > --> 165 super(PyODBCConnector, self).initialize(connection) >>> >> > 166 >>> >> > 167 def _dbapi_version(self): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py >>> >> > in initialize(self, connection) >>> >> > 1740 >>> >> > 1741 def initialize(self, connection): >>> >> > -> 1742 super(MSDialect, self).initialize(connection) >>> >> > 1743 self._setup_version_attributes() >>> >> > 1744 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in initialize(self, connection) >>> >> > 264 self._description_decoder = >>> >> > self.description_encoding = >>> >> > None >>> >> > 265 >>> >> > --> 266 self.do_rollback(connection.connection) >>> >> > 267 >>> >> > 268 def on_connect(self): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in do_rollback(self, dbapi_connection) >>> >> > 438 >>> >> > 439 def do_rollback(self, dbapi_connection): >>> >> > --> 440 dbapi_connection.rollback() >>> >> > 441 >>> >> > 442 def do_commit(self, dbapi_connection): >>> >> > >>> >> > ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] >>> >> > [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]111214;An >>> >> > attempt >>> >> > to >>> >> > complete a transaction has failed. No corresponding transaction >>> >> > found. >>> >> > (111214) (SQLEndTran)') >>> >> > >>> >> > In [ ]: >>> >> > >>> >> > ################################################################# >>> >> > >>> >> > >>> >> > 2017-09-12 17:12:13,839 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > SERVERPROPERTY('ProductVersion') >>> >> > 2017-09-12 17:12:13,840 INFO sqlalchemy.engine.base.Engine () >>> >> > 2017-09-12 17:12:13,881 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > schema_name() >>> >> > 2017-09-12 17:12:13,882 INFO sqlalchemy.engine.base.Engine () >>> >> > 2017-09-12 17:12:14,195 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > CAST('test >>> >> > plain returns' AS VARCHAR(60)) AS anon_1 >>> >> > 2017-09-12 17:12:14,196 INFO sqlalchemy.engine.base.Engine () >>> >> > 2017-09-12 17:12:14,238 INFO sqlalchemy.engine.base.Engine SELECT >>> >> > CAST('test >>> >> > unicode returns' AS NVARCHAR(60)) AS anon_1 >>> >> > 2017-09-12 17:12:14,239 INFO sqlalchemy.engine.base.Engine () >>> >> > >>> >> > >>> >> > --------------------------------------------------------------------------- >>> >> > Empty Traceback (most recent >>> >> > call >>> >> > last) >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1121 wait = use_overflow and self._overflow >= >>> >> > self._max_overflow >>> >> > -> 1122 return self._pool.get(wait, self._timeout) >>> >> > 1123 except sqla_queue.Empty: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/queue.py >>> >> > in get(self, block, timeout) >>> >> > 144 if self._empty(): >>> >> > --> 145 raise Empty >>> >> > 146 elif timeout is None: >>> >> > >>> >> > Empty: >>> >> > >>> >> > During handling of the above exception, another exception occurred: >>> >> > >>> >> > ProgrammingError Traceback (most recent >>> >> > call >>> >> > last) >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _wrap_pool_connect(self, fn, connection) >>> >> > 2146 try: >>> >> > -> 2147 return fn() >>> >> > 2148 except dialect.dbapi.Error as e: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > connect(self) >>> >> > 386 if not self._use_threadlocal: >>> >> > --> 387 return _ConnectionFairy._checkout(self) >>> >> > 388 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _checkout(cls, pool, threadconns, fairy) >>> >> > 765 if not fairy: >>> >> > --> 766 fairy = _ConnectionRecord.checkout(pool) >>> >> > 767 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > checkout(cls, pool) >>> >> > 515 def checkout(cls, pool): >>> >> > --> 516 rec = pool._do_get() >>> >> > 517 try: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1137 with util.safe_reraise(): >>> >> > -> 1138 self._dec_overflow() >>> >> > 1139 else: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in __exit__(self, type_, value, traceback) >>> >> > 65 if not self.warn_only: >>> >> > ---> 66 compat.reraise(exc_type, exc_value, exc_tb) >>> >> > 67 else: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in reraise(tp, value, tb, cause) >>> >> > 186 raise value.with_traceback(tb) >>> >> > --> 187 raise value >>> >> > 188 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1134 try: >>> >> > -> 1135 return self._create_connection() >>> >> > 1136 except: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _create_connection(self) >>> >> > 332 >>> >> > --> 333 return _ConnectionRecord(self) >>> >> > 334 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __init__(self, pool, connect) >>> >> > 460 if connect: >>> >> > --> 461 self.__connect(first_connect_check=True) >>> >> > 462 self.finalize_callback = deque() >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __connect(self, first_connect_check) >>> >> > 660 for_modify(pool.dispatch).\ >>> >> > --> 661 exec_once(self.connection, self) >>> >> > 662 if pool.dispatch.connect: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in exec_once(self, *args, **kw) >>> >> > 245 try: >>> >> > --> 246 self(*args, **kw) >>> >> > 247 finally: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in __call__(self, *args, **kw) >>> >> > 255 for fn in self.listeners: >>> >> > --> 256 fn(*args, **kw) >>> >> > 257 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in go(*arg, **kw) >>> >> > 1330 once_fn = once.pop() >>> >> > -> 1331 return once_fn(*arg, **kw) >>> >> > 1332 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py >>> >> > in first_connect(dbapi_connection, connection_record) >>> >> > 180 c._execution_options = util.immutabledict() >>> >> > --> 181 dialect.initialize(c) >>> >> > 182 event.listen(pool, 'first_connect', >>> >> > first_connect, >>> >> > once=True) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/connectors/pyodbc.py >>> >> > in initialize(self, connection) >>> >> > 164 # run other initialization which asks for user name, >>> >> > etc. >>> >> > --> 165 super(PyODBCConnector, self).initialize(connection) >>> >> > 166 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py >>> >> > in initialize(self, connection) >>> >> > 1741 def initialize(self, connection): >>> >> > -> 1742 super(MSDialect, self).initialize(connection) >>> >> > 1743 self._setup_version_attributes() >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in initialize(self, connection) >>> >> > 265 >>> >> > --> 266 self.do_rollback(connection.connection) >>> >> > 267 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in do_rollback(self, dbapi_connection) >>> >> > 439 def do_rollback(self, dbapi_connection): >>> >> > --> 440 dbapi_connection.rollback() >>> >> > 441 >>> >> > >>> >> > ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 13 for >>> >> > SQL >>> >> > Server][SQL Server]111214;An attempt to complete a transaction has >>> >> > failed. >>> >> > No corresponding transaction found. (111214) (SQLEndTran)') >>> >> > >>> >> > The above exception was the direct cause of the following exception: >>> >> > >>> >> > ProgrammingError Traceback (most recent >>> >> > call >>> >> > last) >>> >> > <ipython-input-11-f3810ddb1488> in <module>() >>> >> > 17 #cnxn = pyodbc.connect(connection_str) >>> >> > 18 #engn.connect() >>> >> > ---> 19 df.to_sql(tbl_server_out, engn, if_exists='append', >>> >> > index=False) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py >>> >> > in to_sql(self, name, con, flavor, schema, if_exists, index, >>> >> > index_label, >>> >> > chunksize, dtype) >>> >> > 1343 sql.to_sql(self, name, con, flavor=flavor, >>> >> > schema=schema, >>> >> > 1344 if_exists=if_exists, index=index, >>> >> > index_label=index_label, >>> >> > -> 1345 chunksize=chunksize, dtype=dtype) >>> >> > 1346 >>> >> > 1347 def to_pickle(self, path, compression='infer'): >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/pandas/io/sql.py >>> >> > in >>> >> > to_sql(frame, name, con, flavor, schema, if_exists, index, >>> >> > index_label, >>> >> > chunksize, dtype) >>> >> > 469 pandas_sql.to_sql(frame, name, if_exists=if_exists, >>> >> > index=index, >>> >> > 470 index_label=index_label, >>> >> > schema=schema, >>> >> > --> 471 chunksize=chunksize, dtype=dtype) >>> >> > 472 >>> >> > 473 >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/pandas/io/sql.py >>> >> > in >>> >> > to_sql(self, frame, name, if_exists, index, index_label, schema, >>> >> > chunksize, >>> >> > dtype) >>> >> > 1148 if_exists=if_exists, >>> >> > index_label=index_label, >>> >> > 1149 schema=schema, dtype=dtype) >>> >> > -> 1150 table.create() >>> >> > 1151 table.insert(chunksize) >>> >> > 1152 if (not name.isdigit() and not name.islower()): >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/pandas/io/sql.py >>> >> > in >>> >> > create(self) >>> >> > 584 >>> >> > 585 def create(self): >>> >> > --> 586 if self.exists(): >>> >> > 587 if self.if_exists == 'fail': >>> >> > 588 raise ValueError("Table '%s' already >>> >> > exists." % >>> >> > self.name) >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/pandas/io/sql.py >>> >> > in >>> >> > exists(self) >>> >> > 572 >>> >> > 573 def exists(self): >>> >> > --> 574 return self.pd_sql.has_table(self.name, self.schema) >>> >> > 575 >>> >> > 576 def sql_schema(self): >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/pandas/io/sql.py >>> >> > in >>> >> > has_table(self, name, schema) >>> >> > 1176 self.connectable.dialect.has_table, >>> >> > 1177 name, >>> >> > -> 1178 schema or self.meta.schema, >>> >> > 1179 ) >>> >> > 1180 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in run_callable(self, callable_, *args, **kwargs) >>> >> > 2042 >>> >> > 2043 """ >>> >> > -> 2044 with self.contextual_connect() as conn: >>> >> > 2045 return conn.run_callable(callable_, *args, >>> >> > **kwargs) >>> >> > 2046 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in contextual_connect(self, close_with_result, **kwargs) >>> >> > 2110 return self._connection_cls( >>> >> > 2111 self, >>> >> > -> 2112 self._wrap_pool_connect(self.pool.connect, >>> >> > None), >>> >> > 2113 close_with_result=close_with_result, >>> >> > 2114 **kwargs) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _wrap_pool_connect(self, fn, connection) >>> >> > 2149 if connection is None: >>> >> > 2150 >>> >> > Connection._handle_dbapi_exception_noconnection( >>> >> > -> 2151 e, dialect, self) >>> >> > 2152 else: >>> >> > 2153 util.reraise(*sys.exc_info()) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _handle_dbapi_exception_noconnection(cls, e, dialect, engine) >>> >> > 1463 util.raise_from_cause( >>> >> > 1464 sqlalchemy_exception, >>> >> > -> 1465 exc_info >>> >> > 1466 ) >>> >> > 1467 else: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in raise_from_cause(exception, exc_info) >>> >> > 201 exc_type, exc_value, exc_tb = exc_info >>> >> > 202 cause = exc_value if exc_value is not exception else >>> >> > None >>> >> > --> 203 reraise(type(exception), exception, tb=exc_tb, >>> >> > cause=cause) >>> >> > 204 >>> >> > 205 if py3k: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in reraise(tp, value, tb, cause) >>> >> > 184 value.__cause__ = cause >>> >> > 185 if value.__traceback__ is not tb: >>> >> > --> 186 raise value.with_traceback(tb) >>> >> > 187 raise value >>> >> > 188 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/base.py >>> >> > in _wrap_pool_connect(self, fn, connection) >>> >> > 2145 dialect = self.dialect >>> >> > 2146 try: >>> >> > -> 2147 return fn() >>> >> > 2148 except dialect.dbapi.Error as e: >>> >> > 2149 if connection is None: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > connect(self) >>> >> > 385 """ >>> >> > 386 if not self._use_threadlocal: >>> >> > --> 387 return _ConnectionFairy._checkout(self) >>> >> > 388 >>> >> > 389 try: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _checkout(cls, pool, threadconns, fairy) >>> >> > 764 def _checkout(cls, pool, threadconns=None, fairy=None): >>> >> > 765 if not fairy: >>> >> > --> 766 fairy = _ConnectionRecord.checkout(pool) >>> >> > 767 >>> >> > 768 fairy._pool = pool >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > checkout(cls, pool) >>> >> > 514 @classmethod >>> >> > 515 def checkout(cls, pool): >>> >> > --> 516 rec = pool._do_get() >>> >> > 517 try: >>> >> > 518 dbapi_connection = rec.get_connection() >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1136 except: >>> >> > 1137 with util.safe_reraise(): >>> >> > -> 1138 self._dec_overflow() >>> >> > 1139 else: >>> >> > 1140 return self._do_get() >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in __exit__(self, type_, value, traceback) >>> >> > 64 self._exc_info = None # remove potential >>> >> > circular >>> >> > references >>> >> > 65 if not self.warn_only: >>> >> > ---> 66 compat.reraise(exc_type, exc_value, exc_tb) >>> >> > 67 else: >>> >> > 68 if not compat.py3k and self._exc_info and >>> >> > self._exc_info[1]: >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/compat.py >>> >> > in reraise(tp, value, tb, cause) >>> >> > 185 if value.__traceback__ is not tb: >>> >> > 186 raise value.with_traceback(tb) >>> >> > --> 187 raise value >>> >> > 188 >>> >> > 189 else: >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _do_get(self) >>> >> > 1133 if self._inc_overflow(): >>> >> > 1134 try: >>> >> > -> 1135 return self._create_connection() >>> >> > 1136 except: >>> >> > 1137 with util.safe_reraise(): >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > _create_connection(self) >>> >> > 331 """Called by subclasses to create a new >>> >> > ConnectionRecord.""" >>> >> > 332 >>> >> > --> 333 return _ConnectionRecord(self) >>> >> > 334 >>> >> > 335 def _invalidate(self, connection, exception=None): >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __init__(self, pool, connect) >>> >> > 459 self.__pool = pool >>> >> > 460 if connect: >>> >> > --> 461 self.__connect(first_connect_check=True) >>> >> > 462 self.finalize_callback = deque() >>> >> > 463 >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/pool.py >>> >> > in >>> >> > __connect(self, first_connect_check) >>> >> > 659 pool.dispatch.first_connect.\ >>> >> > 660 for_modify(pool.dispatch).\ >>> >> > --> 661 exec_once(self.connection, self) >>> >> > 662 if pool.dispatch.connect: >>> >> > 663 pool.dispatch.connect(self.connection, self) >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in exec_once(self, *args, **kw) >>> >> > 244 if not self._exec_once: >>> >> > 245 try: >>> >> > --> 246 self(*args, **kw) >>> >> > 247 finally: >>> >> > 248 self._exec_once = True >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/event/attr.py >>> >> > in __call__(self, *args, **kw) >>> >> > 254 fn(*args, **kw) >>> >> > 255 for fn in self.listeners: >>> >> > --> 256 fn(*args, **kw) >>> >> > 257 >>> >> > 258 def __len__(self): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py >>> >> > in go(*arg, **kw) >>> >> > 1329 if once: >>> >> > 1330 once_fn = once.pop() >>> >> > -> 1331 return once_fn(*arg, **kw) >>> >> > 1332 >>> >> > 1333 return go >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py >>> >> > in first_connect(dbapi_connection, connection_record) >>> >> > 179 _has_events=False) >>> >> > 180 c._execution_options = util.immutabledict() >>> >> > --> 181 dialect.initialize(c) >>> >> > 182 event.listen(pool, 'first_connect', >>> >> > first_connect, >>> >> > once=True) >>> >> > 183 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/connectors/pyodbc.py >>> >> > in initialize(self, connection) >>> >> > 163 >>> >> > 164 # run other initialization which asks for user name, >>> >> > etc. >>> >> > --> 165 super(PyODBCConnector, self).initialize(connection) >>> >> > 166 >>> >> > 167 def _dbapi_version(self): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py >>> >> > in initialize(self, connection) >>> >> > 1740 >>> >> > 1741 def initialize(self, connection): >>> >> > -> 1742 super(MSDialect, self).initialize(connection) >>> >> > 1743 self._setup_version_attributes() >>> >> > 1744 >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in initialize(self, connection) >>> >> > 264 self._description_decoder = >>> >> > self.description_encoding = >>> >> > None >>> >> > 265 >>> >> > --> 266 self.do_rollback(connection.connection) >>> >> > 267 >>> >> > 268 def on_connect(self): >>> >> > >>> >> > >>> >> > >>> >> > /home/saravji/anaconda3/lib/python3.6/site-packages/sqlalchemy/engine/default.py >>> >> > in do_rollback(self, dbapi_connection) >>> >> > 438 >>> >> > 439 def do_rollback(self, dbapi_connection): >>> >> > --> 440 dbapi_connection.rollback() >>> >> > 441 >>> >> > 442 def do_commit(self, dbapi_connection): >>> >> > >>> >> > ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] >>> >> > [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]111214;An >>> >> > attempt >>> >> > to >>> >> > complete a transaction has failed. No corresponding transaction >>> >> > found. >>> >> > (111214) (SQLEndTran)') >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > On Tuesday, September 12, 2017 at 6:31:58 AM UTC-7, Mike Bayer >>> >> > wrote: >>> >> >> >>> >> >> On Mon, Sep 11, 2017 at 9:00 PM, Dirk Biesinger >>> >> >> <dirk.bi...@gmail.com> wrote: >>> >> >> > Mike, >>> >> >> > >>> >> >> > I have upgraded to 1.1.11 (specifically) after posting and have >>> >> >> > still >>> >> >> > seen >>> >> >> > the same error. I also used the event override you posted in >>> >> >> > issue >>> >> >> > #3994. >>> >> >> > Since these experiments I have upgraded to 1.1.13 and the issues >>> >> >> > persist. >>> >> >> >>> >> >> I"m skeptical that either this is the same error and not a >>> >> >> different >>> >> >> one, or this is still the older version of the code somehow. >>> >> >> >>> >> >> Can you please provide the complete stack trace? no need for it >>> >> >> to >>> >> >> be an attachment. >>> >> >> >>> >> >> > >>> >> >> > Unfortunately I can't give you permission to our database >>> >> >> > instance >>> >> >> > (customer >>> >> >> > policies) but am able to cooperate as much as possible. >>> >> >> > Like said in my post, I need to write multiple pandas dataframes >>> >> >> > with >>> >> >> > millions of rows. Not looking really forward to doing this with >>> >> >> > my >>> >> >> > own >>> >> >> > function. ;-) >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> > Dirk Biesinger >>> >> >> > >>> >> >> > dirk.bi...@gmail.com | 206.349.9769 >>> >> >> > >>> >> >> > "Simplicity is the Mastery of Complexity" >>> >> >> > >>> >> >> > On Mon, Sep 11, 2017 at 4:45 PM, Mike Bayer >>> >> >> > <mik...@zzzcomputing.com> >>> >> >> > wrote: >>> >> >> >> >>> >> >> >> On Mon, Sep 11, 2017 at 6:34 PM, dirk.biesinger >>> >> >> >> <dirk.bi...@gmail.com> wrote: >>> >> >> >> > I am encountering errors when trying to use the pd.to_sql >>> >> >> >> > function >>> >> >> >> > to >>> >> >> >> > write >>> >> >> >> > a dataframe to MS SQL Data Warehouse. >>> >> >> >> > The connection works when NOT using sqlalchemy engines. >>> >> >> >> > I can read dataframes as well as row-by-row via select >>> >> >> >> > statements >>> >> >> >> > when I >>> >> >> >> > use >>> >> >> >> > pyodbc connections >>> >> >> >> > I can write data via insert statements (as well as delete >>> >> >> >> > data) >>> >> >> >> > when >>> >> >> >> > using >>> >> >> >> > pyodbc. >>> >> >> >> > However, when I try to connect using a sqlalchemy engine I run >>> >> >> >> > into a >>> >> >> >> > string >>> >> >> >> > of error messages starting with: >>> >> >> >> > >>> >> >> >> > ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] >>> >> >> >> > [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Catalog >>> >> >> >> > view >>> >> >> >> > 'dm_exec_sessions' is not supported in this version. (104385) >>> >> >> >> > (SQLExecDirectW)") >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > I have searched online, and this exact error seems to have >>> >> >> >> > been >>> >> >> >> > reported >>> >> >> >> > / >>> >> >> >> > evaluated in May of this year as issue #3994: >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > https://bitbucket.org/zzzeek/sqlalchemy/issues/3994/azure-sql-datawarehouse-basic >>> >> >> >> >>> >> >> >> the issue originally reported there is the one you are having, >>> >> >> >> it >>> >> >> >> was >>> >> >> >> resolved as of 1.1.11. I have closed the issue as I would need >>> >> >> >> new >>> >> >> >> issues opened to deal with the subsequent issues that user was >>> >> >> >> having. >>> >> >> >> If you upgrade to 1.1.11, you should no longer receive an >>> >> >> >> error >>> >> >> >> about dm_exec_sessions because this error is caught and the next >>> >> >> >> view, >>> >> >> >> sys.dm_pdw_nodes_exec_sessions, is used. There are likely >>> >> >> >> problems >>> >> >> >> beyond that error message but they should not be that message. >>> >> >> >> please open new issues to describe these error messages and keep >>> >> >> >> in >>> >> >> >> mind it is unlikely I can fix them unless someone gives me >>> >> >> >> access to >>> >> >> >> this database. >>> >> >> >> >>> >> >> >> >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > I could not find a solution to this, and I'd really dislike to >>> >> >> >> > do >>> >> >> >> > a >>> >> >> >> > line-wise or blob insert statement (I'm working with multiple >>> >> >> >> > datasets >>> >> >> >> > that >>> >> >> >> > each has a few million rows, so execution time is a >>> >> >> >> > consideration, >>> >> >> >> > although >>> >> >> >> > the result sets I'm getting are more like in the 100k lines >>> >> >> >> > area >>> >> >> >> > each.) >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > I get the same error messages even when I replace the >>> >> >> >> > pd.to_sql >>> >> >> >> > command >>> >> >> >> > with >>> >> >> >> > a simple engine.connect() >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > Enclosed my installed packages (packages.list) >>> >> >> >> > >>> >> >> >> > Enclosed the full traceback (traceback.txt) >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > This is the code I'm using: >>> >> >> >> > >>> >> >> >> > connection_string = >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > "mssql+pyodbc://<username>:<password>@<sqlhost>.database.windows.net:<port>/<database>?driver=ODBC+Driver+13+for+SQL+Server" >>> >> >> >> > engn = sqlalchemy.engine.create_engine(connection_string, >>> >> >> >> > echo=True) >>> >> >> >> > engn.connect() >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > I'm very well aware that MS SQL DataWarehouse behaves a bit >>> >> >> >> > different, >>> >> >> >> > so >>> >> >> >> > I'm open for some experimenting to get this issue narrowed >>> >> >> >> > down. >>> >> >> >> > >>> >> >> >> > In case it matters: I'm running an ubuntu 16.04 VM on azure >>> >> >> >> > with >>> >> >> >> > jupyter >>> >> >> >> > notebook server and python 3.6.1. >>> >> >> >> > >>> >> >> >> > Best, >>> >> >> >> > >>> >> >> >> > DB >>> >> >> >> > >>> >> >> >> > -- >>> >> >> >> > SQLAlchemy - >>> >> >> >> > The Python SQL Toolkit and Object Relational Mapper >>> >> >> >> > >>> >> >> >> > http://www.sqlalchemy.org/ >>> >> >> >> > >>> >> >> >> > To post example code, please provide an MCVE: Minimal, >>> >> >> >> > Complete, >>> >> >> >> > and >>> >> >> >> > Verifiable Example. See http://stackoverflow.com/help/mcve for >>> >> >> >> > a >>> >> >> >> > full >>> >> >> >> > description. >>> >> >> >> > --- >>> >> >> >> > You received this message because you are subscribed to the >>> >> >> >> > Google >>> >> >> >> > Groups >>> >> >> >> > "sqlalchemy" group. >>> >> >> >> > To unsubscribe from this group and stop receiving emails from >>> >> >> >> > it, >>> >> >> >> > send >>> >> >> >> > an >>> >> >> >> > email to sqlalchemy+...@googlegroups.com. >>> >> >> >> > To post to this group, send email to >>> >> >> >> > sqlal...@googlegroups.com. >>> >> >> >> > Visit this group at >>> >> >> >> > https://groups.google.com/group/sqlalchemy. >>> >> >> >> > For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >>> >> >> >> -- >>> >> >> >> SQLAlchemy - >>> >> >> >> The Python SQL Toolkit and Object Relational Mapper >>> >> >> >> >>> >> >> >> http://www.sqlalchemy.org/ >>> >> >> >> >>> >> >> >> To post example code, please provide an MCVE: Minimal, Complete, >>> >> >> >> and >>> >> >> >> Verifiable Example. See http://stackoverflow.com/help/mcve for >>> >> >> >> a >>> >> >> >> full >>> >> >> >> description. >>> >> >> >> --- >>> >> >> >> You received this message because you are subscribed to the >>> >> >> >> Google >>> >> >> >> Groups >>> >> >> >> "sqlalchemy" group. >>> >> >> >> To unsubscribe from this group and stop receiving emails from >>> >> >> >> it, >>> >> >> >> send >>> >> >> >> an >>> >> >> >> email to sqlalchemy+...@googlegroups.com. >>> >> >> >> To post to this group, send email to sqlal...@googlegroups.com. >>> >> >> >> Visit this group at https://groups.google.com/group/sqlalchemy. >>> >> >> >> For more options, visit https://groups.google.com/d/optout. >>> >> >> > >>> >> >> > >>> >> >> > -- >>> >> >> > SQLAlchemy - >>> >> >> > The Python SQL Toolkit and Object Relational Mapper >>> >> >> > >>> >> >> > http://www.sqlalchemy.org/ >>> >> >> > >>> >> >> > To post example code, please provide an MCVE: Minimal, Complete, >>> >> >> > and >>> >> >> > Verifiable Example. See http://stackoverflow.com/help/mcve for a >>> >> >> > full >>> >> >> > description. >>> >> >> > --- >>> >> >> > You received this message because you are subscribed to the >>> >> >> > Google >>> >> >> > Groups >>> >> >> > "sqlalchemy" group. >>> >> >> > To unsubscribe from this group and stop receiving emails from it, >>> >> >> > send >>> >> >> > an >>> >> >> > email to sqlalchemy+...@googlegroups.com. >>> >> >> > To post to this group, send email to sqlal...@googlegroups.com. >>> >> >> > Visit this group at https://groups.google.com/group/sqlalchemy. >>> >> >> > For more options, visit https://groups.google.com/d/optout. >>> >> > >>> >> > -- >>> >> > SQLAlchemy - >>> >> > The Python SQL Toolkit and Object Relational Mapper >>> >> > >>> >> > http://www.sqlalchemy.org/ >>> >> > >>> >> > To post example code, please provide an MCVE: Minimal, Complete, and >>> >> > Verifiable Example. See http://stackoverflow.com/help/mcve for a >>> >> > full >>> >> > description. >>> >> > --- >>> >> > You received this message because you are subscribed to the Google >>> >> > Groups >>> >> > "sqlalchemy" group. >>> >> > To unsubscribe from this group and stop receiving emails from it, >>> >> > send >>> >> > an >>> >> > email to sqlalchemy+unsubscr...@googlegroups.com. >>> >> > To post to this group, send email to sqlalchemy@googlegroups.com. >>> >> > Visit this group at https://groups.google.com/group/sqlalchemy. >>> >> > For more options, visit https://groups.google.com/d/optout. >>> >> >>> >> -- >>> >> SQLAlchemy - >>> >> The Python SQL Toolkit and Object Relational Mapper >>> >> >>> >> http://www.sqlalchemy.org/ >>> >> >>> >> To post example code, please provide an MCVE: Minimal, Complete, and >>> >> Verifiable Example. See http://stackoverflow.com/help/mcve for a >>> >> full >>> >> description. >>> >> --- >>> >> You received this message because you are subscribed to the Google >>> >> Groups >>> >> "sqlalchemy" group. >>> >> To unsubscribe from this group and stop receiving emails from it, send >>> >> an >>> >> email to sqlalchemy+unsubscr...@googlegroups.com. >>> >> To post to this group, send email to sqlalchemy@googlegroups.com. >>> >> Visit this group at https://groups.google.com/group/sqlalchemy. >>> >> For more options, visit https://groups.google.com/d/optout. >>> > >>> > >>> > -- >>> > SQLAlchemy - >>> > The Python SQL Toolkit and Object Relational Mapper >>> > >>> > http://www.sqlalchemy.org/ >>> > >>> > To post example code, please provide an MCVE: Minimal, Complete, and >>> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full >>> > description. >>> > --- >>> > You received this message because you are subscribed to the Google >>> > Groups >>> > "sqlalchemy" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> > an >>> > email to sqlalchemy+unsubscr...@googlegroups.com. >>> > To post to this group, send email to sqlalchemy@googlegroups.com. >>> > Visit this group at https://groups.google.com/group/sqlalchemy. >>> > For more options, visit https://groups.google.com/d/optout. >>> >>> -- >>> SQLAlchemy - >>> The Python SQL Toolkit and Object Relational Mapper >>> >>> http://www.sqlalchemy.org/ >>> >>> To post example code, please provide an MCVE: Minimal, Complete, and >>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >>> description. >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to sqlalchemy+unsubscr...@googlegroups.com. >>> To post to this group, send email to sqlalchemy@googlegroups.com. >>> Visit this group at https://groups.google.com/group/sqlalchemy. >>> For more options, visit https://groups.google.com/d/optout. >> >> > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.