sql >> Databáze >  >> RDS >> Sqlserver

pymssql provede uloženou proceduru, ale nevrací žádné výsledky

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



  1. Je vlákno připojení pymysql bezpečné? Je vlákno kurzoru pymysql bezpečné?

  2. Chyba při importu souboru 5 gig do tabulky

  3. Nelze vyřešit konflikt řazení

  4. PostgreSQL:vložení z jiné tabulky