Python SQLAlchemy ORM: Zeile mit Instanz der Klasse aktualisieren

Gabeln

Ich versuche, eine Funktion zum Aktualisieren von Zeilen in einer Datenbank basierend auf einer Instanz einer Klasse zu erstellen.

Grundsätzlich möchte ich so etwas machen:

def update_table(self, result):
    session = self.Session()

    session.query(result.__class__).filter_by(id=result.id).update(result)

    session.commit()
    session.close_all()


user = db.Model.User(
  id = 1,
  name = "foo"
)

# Store user to db
db.save(user)

updated_user = db.Model.User(
    id = 1,
    user = "bar"
)

# Update the users name with id=1
update_table(updated_user)

Das Problem besteht darin, dass die Sitzungsabfrage zu einem

TypeError: 'Benutzer'-Objekt ist nicht iterierbar

aber meiner Meinung nach sollte dies mit einem aktualisierten Benutzer mit name="bar" enden.

Gibt es eine Möglichkeit, eine solche Funktion mit dem SQLAlchemy ORM zu erstellen?

Gabeln

Ich bin bei dieser Lösung gelandet:

# Update single entry
def update_table_by_id(self, entry):
    # Open connection to database
    session = self.Session()

    # Fetch entry from database
    db_result = session.query(entry.__class__).filter_by(id=entry.id)

    # Convert Models to dicts
    entry_dict = entry.as_dict()
    db_result_dict = db_result.first().as_dict()

    # Update database result with passed in entry. Skip of None
    for value in entry_dict:
        if entry_dict[value] is not None:
            db_result_dict[value] = entry_dict[value]

    # Update db and close connections
    db_result.update(db_result_dict)
    session.commit()
    session.close_all()

Es erlaubt mir, beliebige Modelle einzusenden, und sie werden alle gleich behandelt.

Anregungen und Verbesserungen sind willkommen!

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Aktualisieren einer Zeile mit SQLAlchemy ORM

SQLalchemy-Klasse direkt aktualisieren und Instanz abrufen

Aktualisieren einer bestimmten Zeile mit Flask SQLAlchemy

Sqlalchemy - Das Aktualisieren der Zeile mit einem Filter führt zu einem Listenindexfehler

Instanz der abstrakten Klasse mit verstecktem Konstruktor

Stapelüberlauffehler mit Instanz der Klasse

Aktualisieren Sie das SQLAlchemy orm-Objekt mit dem geänderten Python-Diktat

Effizientes Aktualisieren der Datenbank mithilfe von SQLAlchemy ORM

Aktualisieren der Tabellenzeile mit Sqlalchemy in Scrapy

Aktualisieren Sie die Zeile (SQLAlchemy) mit Daten von Marshmallow

Python: Instanzvariable der übergeordneten Klasse in der untergeordneten Klasse aktualisieren

So aktualisieren Sie die Benutzeroberfläche der übergeordneten Klasse (Bildschirm) regelmäßig von der untergeordneten Klasse (BoxLayout) (Python mit Kivy)

Django ORM - Einsparungen mit ** kwargs und Abrufen der Instanz

Aktualisieren Sie vorherige Zeilen basierend auf der aktuellen Zeile in CSV mit Python

Haskell-Klasse mit Instanz der polymorphen Datendefinition

Instanz der Klasse Location mit gefälschten Daten

Aktualisieren Sie Ruby auf der Python Elastic Beanstalk-Instanz

Einfügen / Aktualisieren der PostGis-Geometrie mit Sequelize ORM

So teilen Sie dem Python-Deskriptor mit, dass eine Instanz der besitzenden Klasse gelöscht wurde

Python-Klassen, die versuchen, das Konzept der Erstellung einer Instanz einer Klasse zusammen mit anderen klassenbezogenen Funktionen zu verstehen

Python - Instanz der Klasse aus dem Modul importieren

Instanz der Python-Klasse, die auf alle Methodenaufrufe reagiert

Kann Instanz der Klasse in Boost Python nicht zurückgeben

Wie kann ich eine Instanz der Klasse dynamisch in Python erstellen?

Python - Instanziieren einer Klasse, ohne der Instanz einen Namen zuzuweisen

Aktualisieren Sie eine Zeile in mysqli mit der if else-Anweisung

So aktualisieren Sie die genaue Zeile in der Tabelle mit Codeigniter

Aktualisieren der ersten verfügbaren Zeile mit mehreren Bedingungen

Aktualisieren nur der letzten aktualisierten Zeile mit einer Funktion in PSQL