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.
Thursday, July 12, 2012
Subscribe to:
Posts (Atom)