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

Python 如何在SQLAlchemy模型中获取列和值字典?,python,sqlalchemy,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)) 是否可以获取一个字典,该字典对于空记录将返回如下内容: {'id':

我有下表:

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))
是否可以获取一个字典,该字典对于空记录将返回如下内容:

{'id': None, 'username': None, 'email': None}
如果我这样做了:

user = User()
user.username = "testuser"
user.email = "test@example.com"

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

您可以使用
用户。\uuuu table\uuuu.columns

def get_model_dict(model):
    return dict((column.name, getattr(model, column.name)) 
                for column in model.__table__.columns)
用法:

user = User()
get_model_dict(user)
在以下位置还有其他选择:


在大多数情况下,列名适合它们。 但也许您可以编写如下代码:

class UserModel(BaseModel):
    user_id = Column("user_id", INT, primary_key=True)
    email = Column("user_email", STRING)
列名为“user\u email”,而字段名为“email”, column.name无法像以前那样正常工作

使用Python元类还有一个技巧,示例代码: