SQLlalchemy:查询结果的顺序意外



我正在使用 SQLAlchemy 和 MySQL,并且有一个包含两个外键的表:

class CampaignCreativeLink(db.Model):
  __tablename__ = 'campaign_creative_links'
  campaign_id = db.Column(db.Integer, db.ForeignKey('campaigns.id'),
    primary_key=True)
  creative_id = db.Column(db.Integer, db.ForeignKey('creatives.id'),
    primary_key=True)

然后我使用 for 循环将 3 个项目插入表中,如下所示:

session.add(8, 3)
session.add(8, 2)
session.add(8, 1)

但是当我检查表格时,项目是反向排序的

8 1
8 2
8 3

查询也反向显示顺序。这是什么原因,我怎样才能保持订单与添加它们时相同?

表是一组行,因此不能保证有任何顺序,除非您指定ORDER BY

在MySQL(InnoDB)中,主键充当聚簇索引。这意味着行按主键指定的顺序进行物理存储,在本例中为 (campaign_id, created_id) ,无论插入顺序如何。这通常是未指定ORDER BY时返回行的顺序。

如果需要按特定顺序返回行,请在查询时指定ORDER BY

最新更新