gpt4 book ai didi

sqlalchemy - sqlalchemy 是否保留多对一/多对多关系中的顺序?

转载 作者:行者123 更新时间:2023-12-04 15:14:44 25 4
gpt4 key购买 nike

我正在使用 sqlalchemy(现在使用 sqlite,但稍后可能会改变)来构建一个数据库,其中插入的顺序和 rowids 很重要。我基本上有以下几点:

class Message(Base):
__tablename__ = 'messages'
__table_args__ = {'sqlite_autoincrement':True}
id = Column(Integer, primary_key=True)
refs = relationship('Ref')

class Ref(Base):
__tablename__ = 'refs'
__table_args__ = {'sqlite_autoincrement':True}
id = Column(Integer, primary_key=True)
message_id = Column(Integer, ForeignKey('messages.id'))

当我创建一个 Message对象和 append Ref反对 message.refs ,我想确保当我将它提交到数据库时 Ref s 将按照它们在列表中出现的相同顺序插入。 sqlalchemy 是默认执行此操作还是每次追加后都需要刷新?

最佳答案

:即使在您的简单情况下,它也可能以这种方式工作,sqlalchemy对插入顺序不做任何保证。

如果您真的需要rowids要根据要求在全局范围内订购,没有简单的方法可以使其开箱即用。

但是,如果您需要的是 Ref 的订购内Message ,那么这可以通过向 Ref 添加另一列来实现用于指示排序,在这种情况下使用 Ordering List扩展是实现这一目标的最简单方法。这将同时加载和插入 Ref保持排序的对象。

关于sqlalchemy - sqlalchemy 是否保留多对一/多对多关系中的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8600744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com