sql >> Databasteknik >  >> RDS >> Sqlserver

pymssql kör lagrad procedur men returnerar inga resultat

Jag har lyckats lösa problemet. Anropar conn.commit() gjorde att markören tappade sina resultat. Jag läste förmodligen en del av pymssql-dokumentationen fel och lade till den raden av misstag - koden fungerar perfekt utan den.

REDIGERA :Jag märkte efter att jag gjorde den här ändringen, att den lagrade proceduren skulle returnera resultaten, men insättnings-/uppdateringsdelarna av proceduren sparades inte. Nu är det klart för mig vad conn.commit() gjorde. Om din lagrade procedur returnerar resultat OCH gör ändringar i databasen måste du anropa conn.commit() efter att du hämtat dem.

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



  1. Infoga en underordnad nod i en XMLTYPE-kolumn

  2. Hur tar jag bort upprepade kolumnvärden från rapporten

  3. PostgreSQL loopar externa funktioner. Är det möjligt?

  4. Installera MySQL 5.6 på Ubuntu 20.04