Отношения SQLAlchemy «многие ко многим» с упорядоченной ассоциациейPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Отношения SQLAlchemy «многие ко многим» с упорядоченной ассоциацией

Сообщение Anonymous »

Я пытаюсь создать в sqlalchemy самоссылающуюся связь «многие ко многим», чтобы иметь возможность извлекать и изменять их, обеспечивая при этом правильный порядок.
У меня есть таблица серверов, и хотелось бы иметь цепочку для каждого сервера, состоящую из следующих серверов, к которым должен подключиться пользователь.
Попробовал следующий подход.

Код: Выделить всё

class ServerChain(Base):
__tablename__ = "server_chains"

server_id = Column(Integer, ForeignKey("servers.id"), primary_key=True)
chained_server_id = Column(Integer, ForeignKey("servers.id"))
seq = Column(Integer, primary_key=True)

class Server(Base):
__tablename__ = "servers"

id = Column(Integer, primary_key=True)
name = Column(String(256), nullable=False)
address = Column(String(256), nullable=False)
port = Column(Integer)
chain = relationship(
"Server",
secondary="server_chains",
primaryjoin=(id == ServerChain.server_id),
secondaryjoin=(id == ServerChain.chained_server_id),
order_by=ServerChain.seq,
collection_class=ordering_list("seq"),
lazy="joined",
)
Я хочу иметь возможность получать и устанавливать Server.chain следующим образом с автоматическим упорядочиванием:

Код: Выделить всё

server1.chain = [server2, server3]
assert server1.chain == [server2, server3]
Однако похоже, что order_list пытается загрузить seq с сервера, и я получаю следующее исключение:

Код: Выделить всё

AttributeError: 'Server' object has no attribute 'seq'


Подробнее здесь: https://stackoverflow.com/questions/791 ... ssociation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»