在SQLAlchemy

时间:2016-04-26 04:56:38

标签: python session exception sqlalchemy lazy-loading

以下是有问题的代码

class Country(ModelBase):
    __tablename__ = "countries"

    code = Column(String(64), nullable=False)
    display_name = Column(String(64), nullable=False)


class State(ModelBase):
    __tablename__ = "states"

    code = Column(String(64), nullable=False)
    display_name = Column(String(64), nullable=False)
    country_id = Column(Integer, ForeignKey(Country.id), nullable=False)
    country = relationship(Country)

我想将State的一个实例转换为json,而转换country(State类中的关系)只有在加载时才应转换,否则它应该是None。

当我尝试将此转换为json时,我只想检查此关系是否已加载

if state.country is None: # Or some other way of checking

它引发异常sqlalchemy.orm.exc.DetachedInstanceError。是否可以为此属性而不是异常获取None(或检查属性是否已加载)。如果在会话结束后,我不想延迟加载它(如果我想加载它,我会在关闭会话之前加载它。)

1 个答案:

答案 0 :(得分:0)

如果您已分离实例,则可以检查以下条件:

public class ImageList {
 private List<ImageEntity> list;

 public ImageList() {
    list = new ArrayList<>();
 }

 public ImageList(List<ImageEntity> list) {
    this.list = list;
 }
 public boolean add(ImageEntity entity) {
    return list.add(entity);
 }
 public void addAll(List<ImageEntity> list) {
     list.addAll(entity);
 }

}