Appel d'une procédure stockée python

Je suis en train d'écrire un script pour tirer info/mise à jour d'un serveur MsSQL et que j'ai un appel de procédure stockée à travailler, mais pas dans mon deuxième, dans le updateDB fonction. voici mon code, le script fonctionne très bien, pas de codes d'erreur

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()
Quelle est la différence entre exec et execute?
rien ils font tous les deux la même chose
Si vous imprimez les résultats bldgRow et deptRow qu'obtenez-vous?
j'obtiens 'PE' pour bldgCODE et '307' pour deptCODE, qui est ce qui im censé être
Si les valeurs ne sont tout simplement pas mis à jour comme prévu après l'exécution de la procédure de mise à jour?

OriginalL'auteur user1229126 | 2012-02-23