Python 3.x Sqlalchemy问题保存多对多对象
我在通过辅助表将Sqlalchemy模型保存到DB时遇到一些问题 这是我的数据库结构:Python 3.x Sqlalchemy问题保存多对多对象,python-3.x,database,orm,sqlalchemy,many-to-many,Python 3.x,Database,Orm,Sqlalchemy,Many To Many,我在通过辅助表将Sqlalchemy模型保存到DB时遇到一些问题 这是我的数据库结构: class UserHalls(db.Model): __tablename__ = 'user_halls' user_id = Column(Integer, ForeignKey('live_users.id'), primary_key=True) hall_id = Column(UUID(as_uuid=True), ForeignKey('halls.id'), prim
class UserHalls(db.Model):
__tablename__ = 'user_halls'
user_id = Column(Integer, ForeignKey('live_users.id'), primary_key=True)
hall_id = Column(UUID(as_uuid=True), ForeignKey('halls.id'), primary_key=True)
class User(db.Model):
"""Basic user model
"""
__tablename__ = 'live_users'
__repr_attrs__ = ['email']
id = Column(Integer, primary_key=True)
email = Column(String(255), unique=True, nullable=False)
password = Column(String(255), nullable=False)
role = Column(Enum(RolesEnum), nullable=False, default="user")
is_active = Column(Boolean, default=False)
halls = relationship("Hall", secondary="user_halls", lazy="joined", back_populates="users")
当我尝试在霍尔表和用户之间创建关系时,同时创建用户时,会出现以下错误:
sqlalchemy.exc.IntegrityError: (psycopg2.errors.ForeignKeyViolation) insert or update on table "user_halls" violates foreign key constraint "user_halls_user_id_fkey"
E DETAIL: Key (user_id)=(1) is not present in table "live_users".
失败的代码示例如下:
@pytest.fixture
def base_user(db, customer, hall, hall_2):
user = User(
customer_id=customer.id,
email="testuser@email.com",
password="test",
is_active=True,
)
user.halls.append(hall)
user.halls.append(hall_2)
# user.save()
rawdb.session.add(user)
rawdb.session.commit()
return user
有没有办法绕过这个问题,或者告诉sqlalchemy先保存用户,然后保存第二个表?我知道我可以在之前添加用户,然后更新它。但我不想这样做。还是我缺少一些配置
多谢大家