--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/xDVBO-iBoRIJ.
To post to this group, send email to sqlal...@googlegroups.com.
To unsubscribe from this group, send email to sqlalchemy+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/Z-kuaTHBrP8J.
> From what I've read these errors are usually solved by adding use_alter=True and inverse.
>
> It doesn't work for me though.
>
> I have ridiculously many relations between two tables. But that's how it is and I cannot refactor the model at this point.
>
anyway, it's a little unclear what the difference between Project.user_account and Project.workers is....I created a sample declarative model that illustrates workers/client/creator in both directions, placing the post_updates on the many-to-ones to minimize the extra UPDATE statements and just putting use_alter on User.project_id, so you can see it working here. You'd have to figure out exactly how to make Elixir do the same thing:
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
Base= declarative_base()
class Project(Base):
__tablename__ = 'project'
id = Column(String(100), primary_key=True)
client_id = Column(String(80), ForeignKey('user.username'))
creator_id = Column(String(80), ForeignKey('user.username'))
workers = relationship("User", backref="assigned_project",
primaryjoin="Project.id==User.project_id")
client = relationship("User", backref="owned_projects",
primaryjoin="Project.client_id==User.username",
post_update=True)
creator = relationship("User", backref="created_projects",
primaryjoin="Project.creator_id==User.username",
post_update=True)
class User(Base):
__tablename__ = 'user'
username = Column(String(80), primary_key=True)
project_id = Column(String(100), ForeignKey("project.id", use_alter=True,
name="fk_user_project_id"))
e = create_engine("sqlite://", echo=True)
Base.metadata.create_all(e)
s = Session(e)
p1 = Project(id="someproject")
u1 = User(username="someuser")
p1.client = p1.creator = u1
u1.assigned_project = p1
s.add(u1)
s.commit()
--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/w3ngcBw7OjMJ.