Problém se mi podařilo vyřešit. Volání conn.commit()
způsoboval, že kurzor ztrácel výsledky. Pravděpodobně jsem si špatně přečetl část dokumentace pymssql a omylem jsem přidal tento řádek - kód bez něj funguje perfektně.
UPRAVIT :Po provedení této změny jsem si všiml, že uložená procedura vrátí výsledky, avšak části procedury vložení/aktualizace nebyly uloženy. Teď je mi jasné, co conn.commit()
dělal. Pokud vaše uložená procedura vrací výsledky A provádí změny v databázi, musíte zavolat conn.commit()
až je získáte.
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()