簡體   English   中英

sqlalchemy:查詢結果的順序意外

[英]sqlalchemy: order of query result unexpected

我在MySQL中使用SQLAlchemy,並且有一個帶有兩個外鍵的表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM