Вызов хранимой процедуры python

Я пишу сценарий, чтобы вытащить информацию / обновить сервер MsSQL, и я могу запустить мой один вызов хранимой процедуры, но не мой второй в функции updateDB. вот мой код, скрипт работает нормально, никаких кодов ошибок

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() 

2 Solutions collect form web for “Вызов хранимой процедуры python”

Зафиксируйте свои изменения после запуска процедуры обновления:

 ... #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() 

В pyodbc.connect() autocommit отключен по умолчанию

нашел ответ всем, потому что я указал устаревший драйвер вместо нового для MsSQL 2008 heres код

  conn = pyodbc.connect(driver = '{SQL Server Native Client 10.0}', server = '(local)', database = 'Inventory', uid = 'sa', pwd = 'p@$$w0rd123',autocommit=True) 
  • Установка параметров подключения с помощью Pyodbc + UnixODBC + FreeTDS
  • Использование pyodbc вызывает ошибку: имя источника данных не найдено, и драйвер по умолчанию не указан
  • pymssql: как использовать проверку подлинности Windows при работе в окне без окна
  • Подключение к SQL Server 2012 с использованием sqlalchemy и pyodbc
  • pymssql против pyodbc против adodbapi против ...
  • Как подключиться к SQL Server через sqlalchemy с помощью проверки подлинности Windows?
  • Получение сообщений SQL Server с использованием ADO и win32com
  • Могу ли я использовать pyodbc / freetds и sqlalchemy с десятичными данными в mssql?
  • Python - лучший язык программирования в мире.