Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

pymssql esegue la procedura memorizzata ma non restituisce risultati

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