[FIXED] Was ist die Verwendung von __table_args__ = {‘extend_existing’: True} in SQLAlchemy?

Ausgabe

Ich habe eine Flask-Anwendung, die ich in Django konvertieren möchte. In einem der Modelle, die ein abstraktes Basismodell erben, wird es als erwähnt

__table_args__ = {'extend_existing': True}

Kann jemand bitte anhand eines kleinen Beispiels erklären, was dies in SQLAlchemy bedeutet.

Ich habe einige Artikel durchgesehen, aber als ich an Django gearbeitet habe und neu bei Flask-SQLAlchemy war, konnte ich es nicht richtig verstehen.

https://hackersandslackers.com/manage-database-models-with-flask-sqlalchemy/
https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/table_config.html

Lösung

Wenn auf True gesetzt, teilt dies mit, dass die Tabelle bereits in den Metadaten vorhanden ist. Dieser Parameter soll bestimmen, ob diese Tabelle neue Spalten für ihre erbenden Klassen hinzufügen oder sozusagen „erweitern“ darf.

Ich habe zum Beispiel:

class User(Base):
  __table_args__ = {'extend_existing': True}
  
  attr1 = Column(String)
  attr2 = Column(Integer)

class ChildUser(User):
  attr3 = Column(Integer) # this will allow this column to 'extend' the parent attriubtes.

Dieser Parameter ist standardmäßig auf „False“ gesetzt, und normalerweise möchten Sie diese Einstellung nicht ändern.


Beantwortet von –
Jinghui Niu


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like