SQLAlchemy 在表之间创建关系时出错

问题描述 投票:0回答:1

我正在尝试使用 SQLAlchemy 从两个表创建一个简单的数据库:Users 和 Couple。 Couple 表必须包含 Users 表中的“一对”用户。

例如:

用户:

id 用户名
1 用户1
2 用户2
3 用户3
4 用户4

情侣:

id first_user_ldap 第二个用户_ldap
1 用户1 用户2
2 用户3 用户4

我尝试通过“关系”来做到这一点,这样就有一对多的关系,但没有成功。 我请求你的帮助。

这是我的模型的示例:

class Couple(Base):
    __tablename__ = 'couples'

    id = Column(Integer, primary_key=True, autoincrement=True, unique=True)
    first_user_ldap = relationship('Users', back_populates='Couple',
                                   lazy='dynamic')
    second_user_ldap = relationship('Users', back_populates='Couple',
                                    lazy='dynamic')


class Users(Base):
    __tablename__ = 'users'
    id = Column(String, primary_key=True, unique=True)
    user_name = Column(String)

python database sqlalchemy flask-sqlalchemy relationship
1个回答
0
投票

我解决了这个问题。 可能的原因之一是“脏导入”,它......从其他文件中捕获模型。
现在:

from sqlalchemy import create_engine
from sqlalchemy.orm import Session, declarative_base
from sqlalchemy import Column, String, ForeignKey, Integer
from sqlalchemy.engine.url import URL

型号:

class Users(Base):
    __tablename__ = 'users'
    id = Column(String, primary_key=True, unique=True)
    user_name = Column(String)


class Couple(Base):
    __tablename__ = 'couples'

    id = Column(Integer, primary_key=True, autoincrement=True, unique=True)
    first_user_ldap = Column(String, ForeignKey('users.id'))
    second_user_ldap = Column(String, ForeignKey('users.id'))

数据集:

    db.insert(Users(id=1, user_name='user1'))
    db.insert(Users(id=2, user_name='user2'))
    db.insert(Users(id=3, user_name='user3'))
    db.insert(Users(id=4, user_name='user4'))
    db.insert(Users(id=5, user_name='user5'))
    db.insert(Users(id=6, user_name='user6'))
    db.insert(Couple(first_user_ldap=1, second_user_ldap=2))
    db.insert(Couple(first_user_ldap=3, second_user_ldap=4))
    db.insert(Couple(first_user_ldap=5, second_user_ldap=6))
© www.soinside.com 2019 - 2024. All rights reserved.