Ich versuche zu verstehen, wie ORMs Tabellenspalten über ein Klassenattribut auflösen können, ohne explizit Tabellen- und Spaltennamen anzugeben.Wie bindet eine ORM-Modelldefinition Spaltenattribute an tatsächliche Spalten?
from orm import Column
class Car(Model):
id = Column()
Abfragen sind dann in der Lage, dies zu tun:
Car.select().where(Car.id == 7)
Ich verstehe, dass Spalte ein Verfahren zum __eq__
Operator definiert, aber wie wäre eine Spalte Beispiel weiß, dass es in der Klasse bezieht Car
und Attribut id
(Angenommen, diese werden standardmäßig für Tabellen- und Spaltennamen verwendet)
Ich lerne viel über Python, indem ich eingrabe, wie ORM-Bibliotheken funktionieren!
Ich wusste, dass mir etwas Magie fehlte. Hatte Metaklassen noch nie zuvor gesehen. Danke Laurent! – pybot