Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

pymssql wykonuje procedurę składowaną, ale nie zwraca żadnych wyników

Udało mi się rozwiązać problem. Wywołanie conn.commit() powodował, że kursor tracił wyniki. Prawdopodobnie źle odczytałem część dokumentacji pymssql i przez pomyłkę dodałem tę linię - kod działa bez niej.

EDYTUJ :Zauważyłem, że po wprowadzeniu tej zmiany procedura składowana zwróci wyniki, jednak części procedury wstawiania/aktualizacji nie są zapisywane. Teraz jest dla mnie jasne, co conn.commit() robił. Jeśli twoja procedura składowana zwraca wyniki ORAZ wprowadza zmiany w bazie danych, musisz wywołać conn.commit() po ich przyniesieniu.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz krótką nazwę dnia w SQL Server (T-SQL)

  2. Co to jest SQL Server Management Studio (SSMS)?

  3. wyszukiwanie sql z ciągu csv

  4. Jak zwrócić 1 jednowierszowe dane z 2 różnych tabel z dynamiczną zawartością w sql

  5. 3 sposoby na usunięcie zduplikowanych wierszy w SQL Server, ignorując klucz podstawowy