Discovered an interesting variation in pyodbc behavior today. A coworker asked me if he needed to commit explicitly when using pyodbc to execute a stored procedure. I told him he did, but he protested that his code worked fine without it. Here's a paraphrased version:
def db_exec(qry):
with pyodbc.connect(cnxn_str) as db:
db.execute(proc)
I tested it, and what do you know? It works. But the following does not:
db = pyodbc.connect(cnxn_str)
db.execute(proc)
db.close()
In this case, the results of proc will be rolled back automatically when closing the connection. So evidently the way that the with handler is coded includes an autocommit.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment