在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
。
最后,我想要获取列:name
和body
。
答案 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]