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