J'utilise sqlalchemy (avec sqlite pour l'instant, mais cela pourrait changer plus tard) pour construire une base de données dans laquelle l'ordre des insertions et donc rowids est important. J'ai essentiellement les éléments suivants:sqlalchemy conserve-t-il l'ordre dans les relations plusieurs-à-un/plusieurs-à-plusieurs?
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'))
Lorsque je crée un objet Message
et append
un objet Ref
à message.refs
, je voudrais être sûr que quand je commets ce à la base de données les Ref
s seront insérés dans le même ordre dans lequel ils apparaissent dans la liste. Est-ce que sqlalchemy le fait par défaut ou dois-je le vider après chaque ajout?
Droite. Mes 5 ¢: pour beaucoup-à-plusieurs, vous aurez besoin d'un modèle intermédiaire avec un champ d'ordre, une relation avec celui-ci et un proxy d'association pour cacher ces détails d'implémentation. –
Merci van, ça a l'air parfait pour ce dont j'ai besoin :) – Asterism