Consegui resolver o problema. Chamando
conn.commit()
estava fazendo o cursor perder seus resultados. Eu provavelmente interpretei mal parte da documentação do pymssql e adicionei essa linha por engano - o código funciona perfeitamente sem ela. EDITAR :Percebi que depois de fazer essa alteração, o procedimento armazenado retornaria os resultados, mas as partes de inserção/atualização do procedimento não estavam salvando. Agora está claro para mim o que
conn.commit()
estava fazendo. Se seu procedimento armazenado retornar resultados E fizer alterações no banco de dados, você precisará chamar conn.commit()
depois de buscá-los. server = 'MY\SERVER'
user = 'user'
password = 'password'
database = 'db'
proc = 'checkin'
with pymssql.connect(server, user, password, database) as conn:
with conn.cursor() as cursor:
cursor.callproc(proc, (eha, ip, url, alias, location, rotation))
cursor.nextset()
results = cursor.fetchall()
conn.commit()
f = open('/var/wwwdata/locations.txt', 'w')
for result in results:
print result[0]
f.write(result[0])
f.close()