【问题标题】:Linking two tables where the same value exists, without Primary key - SQLAlchemy链接两个存在相同值的表,没有主键 - SQLAlchemy
【发布时间】:2021-05-15 11:08:19
【问题描述】:

我定义了以下表格(非常简化的版本):

class Orders(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    order_id = db.Column(db.Integer,nullable=False)
    date_created = db.Column(db.DateTime, nullable=False)

class ProductOrders(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    order_id = db.Column(db.Integer, nullable=False)
    product_id = db.Column(db.Integer, nullable=False)
    base_price = db.Column(db.Float, nullable=False)

我正在使用 BigCommerce API,并且在两个表中都有多个 order_id。 order_id 不是全局唯一的,但每个商店都是唯一的。我正在尝试解决如何链接这两个表。我确实有一个 Store 表(如下所示),其中包含每个商店的 store.id,但我无法弄清楚如何将 Orders 和 ProductOrders 表连接在一起,因此我可以访问 store.id 相同的两个表数据.例如,我只想查询一组 Orders.order_id 或 Orders.date_created 并获取 ProductOrders.base_price。

class Store(db.Model):
    id = db.Column(db.Integer, primary_key=True)

有什么想法吗?

【问题讨论】:

    标签: python sql database sqlalchemy


    【解决方案1】:

    假设两个查询中的 id 是 store_id 并且 order_id 是每个商店唯一的,您将必须使用 AND 语句应用连接。

    例如:(在 SQL 中) 订单在 Orders.id = ProductOrders.id 和 Orders.order_id = ProductOrders.order_id 上加入 ProductOrders

    答案是基于我从您的问题中了解到的,如果这不是您需要的答案,请见谅。

    编辑: 在 sqlalchemy 中它会像下面这样:

    从 sqlalchemy 导入和_

    session.query(Orders, ProductOrders).filter(and_(Orders.id == ProductOrders.id, Orders.order_id == ProductOrders.order_id)).all()

    参考资料:

    https://www.tutorialspoint.com/sqlalchemy/sqlalchemy_orm_working_with_joins.htm

    Using OR in SQLAlchemy

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      相关资源
      最近更新 更多