我正在使用 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
。