Llamando a un procedimiento almacenado python.

Estoy escribiendo un script para obtener información / actualizar un servidor MsSQL y puedo hacer que mi llamada a un procedimiento almacenado funcione, pero no la segunda en la función updateDB. Aquí está mi código, el script funciona bien, no hay códigos de error

import pyodbc import json import argparse import cgi, cgitb #GLOBALS BUILDCODE = " " deptCODE = 0 bldgCODE = " " def getCodes(conn, building, department): #just for testing departmentt = 'COMPUTER SCIENCE' buildingt = 'PEARCE HALL' #geting the building code from db cursorBuild = conn.cursor() cursorBuild.execute("select * from dbo.building where name = '%s'" % buildingt) bldgRow = cursorBuild.fetchall() cursorBuild.close() bldgCode = bldgRow.pop(0) global bldgCODE bldgCODE = bldgCode.code #getting the dept code cursorDept = conn.cursor() cursorDept.execute("execute dbo.GetCode_ByDepartment @department = '%s'" % departmentt) deptRow = cursorDept.fetchall() cursorDept.close() deptCode = deptRow.pop(0) global deptCODE deptCODE = deptCode.code print type(deptCODE) print deptCODE #returning the values return (bldgCode, deptCode) def updateDB(conn, tag, room, updater): #updating the database updateCursor = conn.cursor() print deptCODE print bldgCODE #this will pass params just has them hard codded for testing conn.execute("exec dbo.UpdateCheck_In @room = '400', @building = 'PE', @department = 307, @global_id = 'bacon', @tag = '120420'") if __name__ == "__main__": #connectin to the db with SQL Authentification conn = pyodbc.connect(driver = '{SQL Server}', server = '(local)', database = 'Inventory', uid = 'sa', pwd = 'p@$$w0rd123') #checking to see if you connected to the db or not if (conn == False): print "Error, did not connect to the database" else: #NEEDS THIS cgitb.enable cgitb.enable() # Create instance of FieldStorage form = cgi.FieldStorage() #get the data from the url that called it tag = form.getvalue('tagnum') building = form.getvalue('build') roomNum = form.getvalue('room') department = form.getvalue('dept') updater = form.getvalue('update') #check to see if item is in the db itemIsThere = conn.cursor() itemIsThere.execute("select * from dbo.check_in where tag = '120420';") print itemIsThere itemIsThere.close() #if the item in in the inventory if (itemIsThere != None): #getting the codes getCodes(conn, building, department) #calling the update function updateDB(conn, tag, roomNum, updater) else : pass conn.close() 

Confirme sus cambios después de ejecutar el procedimiento de actualización:

 ... #this will pass params just has them hard coded for testing conn.execute("exec dbo.UpdateCheck_In @room = '400', @building = 'PE', @department = 307, @global_id = 'bacon', @tag = '120420'") conn.commit() 

En pyodbc.connect() automática está deshabilitada por defecto

encontré la respuesta a todos, fue porque especifiqué el controlador heredado en lugar del nuevo para MsSQL 2008 aquí está el código

  conn = pyodbc.connect(driver = '{SQL Server Native Client 10.0}', server = '(local)', database = 'Inventory', uid = 'sa', pwd = 'p@$$w0rd123',autocommit=True)