【问题标题】:What am I doing wrong in my SQLAlchemy model and column property?我在我的 SQLAlchemy 模型和列属性中做错了什么?
【发布时间】:2022-01-22 10:00:06
【问题描述】:

在我的 Flask + SQLAlchemy 应用程序中,除了其他人之外,我还有这两个数据库表/模型:

class Client(db.Model):
    __tablename__ = "clients"

    id = Column(Integer, primary_key=True)
    client_name = Column(String, nullable=False, unique=True)
    information = Column(String)

class ImageDataSet(db.Model):
    __tablename__ = "image_data_sets"

    id = Column(Integer, primary_key=True)
    client_id = Column(Integer, ForeignKey("clients.id"), nullable=False)

    client = db.column_property(db.select([Client.client_name]).where(Client.id == client_id))

换句话说,我想在我的模型ImageDataSets 中有一个属性client,基于Client 模型/表中的client_id。但是,当启动应用程序时,我会收到以下警告,因为我调用了db.column_property

SAWarning:将 SELECT 对象隐式强制为标量子查询;请使用 .scalar_subquery() 方法生成标量子查询。

有什么想法我在这里做错了吗?

【问题讨论】:

  • 按照警告提示操作并将scalar_subquery() 添加到您的查询中。
  • @IljaEverilä 抱歉,我不知道它会这么容易。如果您想发布答案,那么我很乐意接受。或者,如果您愿意,我可以自己回答解决方案。
  • 请自行回答,没有错的:)

标签: python sqlalchemy


【解决方案1】:

感谢Ilja Everilä's comment,我通过将列属性更改为以下内容解决了这个问题:

client = db.column_property(db.select([Client.client_name]).where(Client.id == client_id).scalar_subquery())

现在警告消失了。

【讨论】:

    猜你喜欢
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2011-06-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多