У меня проблема с использованием SQLAlchemy.
Base = declarative_base()
node_to_node = Table("node_to_node", Base.metadata,
Column("left_node_id", Integer, ForeignKey("node.id"), primary_key=True),
Column("right_node_id", Integer, ForeignKey("node.id"), primary_key=True)
)
class Node(Base):
__tablename__ = 'node'
id = Column(Integer, primary_key=True)
label = Column(String)
right_nodes = relationship("Node",
secondary=node_to_node,
primaryjoin=id==node_to_node.c.left_node_id,
secondaryjoin=id==node_to_node.c.right_node_id,
backref="left_nodes"
)
metadata = Base.metadata
engine = create_engine("postgres+psycopg2://postgres:admin@localhost:5432/test")
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
session = sessionmaker()
session.configure(bind=engine)
s = session()
node1 = Node(label="node1")
node2 = Node(label="node2")
node3 = Node(label="node3")
node1.right_nodes.append(node2)
node1.right_nodes.append(node3)
s.add_all([node1, node2, node3])
s.commit()
я хочу иметь идентификаторы всех правильных узлов узла 1 в виде массива, поэтому здесь [2, 3]
Знаете ли вы метод, который позволяет мне сделать это?
Заранее спасибо за любую помощь!
РЕДАКТИРОВАТЬ:
class NeedTag(Base):
__tablename__ = 'need_tags'
tag_id = Column(Integer, ForeignKey('tags.id'), primary_key=True)
text_id = Column(Integer, ForeignKey('texts.id'), primary_key=True)
class Text(Base) :
__tablename__ = 'texts'
id = Column(Integer, primary_key=True)
text = Column(Text, nullable=False)
need_tag = relationship("Tag",
secondary="need_tags")
class Tag(Base):
__tablename__ = 'tags'
id = Column(Integer, primary_key=True)
name = Column(String(), nullable=False)
У меня проблема с синтаксисом SQL Alchemy.
Например, я определил класс «Текст и теги» и отношение «многие ко многим» между текстом и тегами. Чтобы использовать текст, необходимо иметь несколько тегов, которые должны присутствовать.
Пример условия:
Если tag1 или tag2:
Если tag3 или tag 4:
Текст1 можно использовать
Я хотел бы сделать это:
text1.need_tags = [ [tag1, tag2],[tag3, tag4] ]
И поэтому, чтобы использовать text1, вам нужен как минимум 1 тег в 1-м списке И 1 тег во 2-м списке
Но я попробовал так много техник, и все они потерпели неудачу
Вы знаете, возможно ли это сделать с помощью SQLAlchemy? Или что-то в этом роде