python - 使用 sqlalchemy 从类返回 NOT NULL 列

标签 python sqlalchemy pyramid

在 python 中 sqlalchemy我想获取我的 nullable=False 列 类,包括 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

最佳答案

您可以遍历 MyClass.__table__.columns 并获取不可为 null 的列的名称

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]

关于python - 使用 sqlalchemy 从类返回 NOT NULL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777484/

相关文章:

python - 如何获取音频设备和名称

python - PyTorch 中带有偏置的嵌入层和线性层之间有什么区别

python - 如何使用 sqlalchemy 对条目进行排名?

python - 有没有办法使用 Paste Deploy 共享通用配置?

python - SQLAlchemy 尝试两次删除多对多次要关系

python - 在 Msys 上安装 Pip

python - 如何使用pyqt4隐藏水平框

python - 所有列上的 SQLAlchemy 继承过滤器

python - 如何使用 pytest 对 sqlalchemy orm 类进行单元测试

python - 路线在生产中被破坏,但在 Pyramid 开发中未被破坏