Успях да реша проблема. Извикване на conn.commit()
караше курсора да губи своите резултати. Вероятно съм прочел погрешно част от документацията на pymssql и съм добавил този ред по погрешка - кодът работи перфектно и без него.
РЕДАКТИРАНЕ :Забелязах, че след като направих тази промяна, съхранената процедура ще върне резултатите, но частите за вмъкване/актуализация на процедурата не се запазват. Сега ми е ясно какво е conn.commit()
правеше. Ако вашата съхранена процедура връща резултати И прави промени в базата данни, трябва да извикате conn.commit()
след като ги вземете.
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()