Frage

Ich bin verwirrt darüber, warum Python ein Cursorobjekt benötigt.Ich kenne jdbc und dort ist die Datenbankverbindung ziemlich intuitiv, aber in Python bin ich mit dem Cursorobjekt verwechselt.Ich bezweifle auch, was der Unterschied zwischen Cursor ist.schließen() und Verbindung.close() -Funktion in Bezug auf die Ressourcenfreigabe.

War es hilfreich?

Lösung

Das Cursor-Paradigma ist nicht spezifisch für Python, sondern sind eine häufige Datenstruktur in Datenbanken selbst .

In Abhängigkeit von der zugrunde liegenden Implementierung kann es möglich sein, mehrere Cursors zu erstellen, die dieselbe Verbindung zu einer Datenbank teilen.Schließen des Cursors sollte freie Ressourcen, die mit der Abfrage verknüpft sind, einschließlich aller Ergebnisse, einschließlich aller von der DB, der nicht abgerufenen Ergebnisse (oder nicht abgerufen, aber nicht verwendet), aber die Verbindung zur Datenbank selbst nicht beseitigen würde, sodass Sie einen neuen Cursor in derselben Datenbank erhalten könnenohne dass sich wieder authentifizieren muss.

Andere Tipps

Wie andere schon erwähnt haben, a Connection() ist die Netzwerkverbindung zur Datenbank, und es ist nur eine wirkliche Verwendung, Cursor zurückzugeben. MODELL: PEP-249, wobei DBApi 2.0 angegeben ist, definiert nicht eindeutig, was genau eine Verbindung oder ein Cursor ist oder was die close() methode auf jedem muss tun;nur das <module>.connect() muss eine Instanz von zurückgeben <module>.Connection , dass <module>.Connection.cursor() muss eine Instanz von zurückgeben <module>.Cursor , und <module>.Cursor.execute() sollte die bereitgestellte Anweisung aufrufen und die resultierenden Zeilen zurückgeben.Insbesondere definiert es keine <module>.Connection.execute() , obwohl es bestimmten Implementierungen freisteht, sie als Erweiterungen zu implementieren.

Abhängig von diesen Erweiterungen ist es jedoch wahrscheinlich unklug, da dies bedeutet, dass Sie keinen portablen Code haben.DBApi stellt diese zweistufige Anforderung, da es in einigen Datenbanken schwierig sein kann, die Verbindung ohne Zwischenobjekt auszuführen.

Connection Object ist Ihre Verbindung zur Datenbank, schließen Sie, wann Sie mit der Datenbank zusammen mit der Datenbank fertig sind.Cursor-Objekt ist ein Iterator über einem Ergebnis, das aus einer Abfrage eingestellt ist.Schließen Sie diese, wenn Sie mit diesem Ergebnis fertig sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top