使用sqlalchemy从类中返回NOT NULL列

时间:2016-03-03 16:19:51

标签: python sqlalchemy pyramid

在python sqlalchemy中,我想获得我的nullable=False列 class,包括JSONB类型。

这是我的示例课程:

class MyClass():
    __tablename__ = 'myclass'
    id = Column("id", primary_key=True)
    name = Column(String, nullable=False)
    body = Column(JSONB, nullable=False)
    irrelevant = Column(String, nullable=True)

使用模块inspect我可以获取MyClass的成员并应用过滤器:

# list of possible attributes
attr = [a for a in inspect.getmembers(MyClass,lambda :not(inspect.isroutine(a))) if not '__' in  a[0]]

但是无法检查列中是否有nullable=False。 最后,我想要获取列:namebody

1 个答案:

答案 0 :(得分:1)

您可以迭代MyClass.__table__.columns并获取不可为空的列的名称

column_names = [col.name for col in MyClass.__table__.columns if not col.nullable]

然后使用getattr

获取属性
attrs = [getattr(MyClass, column_name) for column_name in column_names]