我正在尝试使用 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)
我解决了这个问题。
可能的原因之一是“脏导入”,它......从其他文件中捕获模型。
现在:
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))