Sono riuscito a risolvere il problema. Chiamando conn.commit()
stava facendo perdere i risultati al cursore. Probabilmente ho letto male parte della documentazione di pymssql e ho aggiunto quella riga per errore:il codice funziona perfettamente senza di essa.
MODIFICA :Ho notato che dopo aver apportato questa modifica, la procedura memorizzata avrebbe restituito i risultati, tuttavia le parti di inserimento/aggiornamento della procedura non venivano salvate. Ora mi è chiaro cosa conn.commit()
stava facendo. Se la procedura memorizzata restituisce risultati E apporta modifiche al database, è necessario chiamare conn.commit()
dopo averli recuperati.
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()