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

pymssql udfører lagret procedure, men returnerer ingen resultater

Det er lykkedes mig at løse problemet. Kalder conn.commit() fik markøren til at miste sine resultater. Jeg har nok læst noget af pymssql-dokumentationen forkert og tilføjet den linje ved en fejl - kode fungerer perfekt uden den.

REDIGER :Jeg bemærkede, efter at jeg lavede denne ændring, at den lagrede procedure ville returnere resultaterne, men indsættelses-/opdateringsdelene af proceduren blev ikke gemt. Nu er det klart for mig, hvad conn.commit() gjorde. Hvis din lagrede procedure returnerer resultater OG foretager ændringer i databasen, skal du kalde conn.commit() efter du har hentet 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. Laravel 5:Overtrædelse af integritetsbegrænsning:1452 Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes

  2. Hvordan kan jeg generere et INSERT-script til en tabel med et VARBINARY(MAX)-felt?

  3. Afrunding af en værdi i en varchar-kolonne i MS SQL Server 2012?

  4. MySQL Closure Table hierarkisk database - Sådan trækker du information ud i den rigtige rækkefølge