如何在 SQLAlchemy 模型中获取列和值字典?

ddi*_*hev 3 python sqlalchemy

我有下表:

Base = declarative_base()
metadata = Base.metadata

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    username = Column(String(255))
    email = Column(String(255))
Run Code Online (Sandbox Code Playgroud)

是否有可能获得一个字典,对于空记录将返回如下内容:

{'id': None, 'username': None, 'email': None}
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

user = User()
user.username = "testuser"
user.email = "test@example.com"
Run Code Online (Sandbox Code Playgroud)

我希望能够获得具有相应值的字典。当然,如果我保存记录,我希望它也id有。

ale*_*cxe 7

您可以使用user.__table__.columns

def get_model_dict(model):
    return dict((column.name, getattr(model, column.name)) 
                for column in model.__table__.columns)
Run Code Online (Sandbox Code Playgroud)

用法:

user = User()
get_model_dict(user)
Run Code Online (Sandbox Code Playgroud)

还有其他选择: