Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aliasing von Feldnamen im SQLAlchemy-Modell oder der zugrunde liegenden SQL-Tabelle

Hier ist eine elegante Lösung, die in den SQLAlchemy Docs beschrieben wird , die genau das tut, was Sie wollen:

from sqlalchemy.orm import synonym
class User():
    __tablename__ = 'Users'
    username = Column(STRING, primary_key=True)
    id = synonym('username')

Es funktioniert wie erwartet:

>>> john = session.query(User).filter_by(id='John Doe').first()
>>> print([john.id, john.username])
['John Doe', 'John Doe']
>>> john.id is john.username
True

Übrigens der User Klasse muss eine Unterklasse von SQLAlchemy declarative_base() sein Klasse:

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
    ...

Gehen Sie zu docs für weitere Referenzen.