![](/img/trans.png)
[英]How to add data into two tables with one to many relationship using flask-sqlalchemy and flask
[英]How to create many to many relationship between two tables using Flask-SQLAlchemy
我有用户和论坛表。 用户在许多论坛中做出了贡献,并且论坛有许多用户
我的数据库表
users
+----+------------+
| id | name |
+----+------------+
| 1 | user_one |
| 2 | user_two |
| 3 | user_three |
+----+------------+
forums
+----+--------+
| id | name |
+----+--------+
| 1 | forum1 |
| 2 | forum2 |
| 3 | forum3 |
+----+--------+
users_forums
+---------+----------+
| user_id | forum_id |
+---------+----------+
| 1 | 1 |
| 1 | 3 |
| 3 | 2 |
| 2 | 1 |
+---------+----------+
在您的 SQLAlchemy UserModel 中,您需要使用如下关系:
forum_id = db.Column(db.Integer, db.ForeignKey("forum.id"), nullable=False)
forum = db.relationship("ForumModel")
然后在您的 ForumModel 中,您将它们链接到以下内容:
users = db.relationship("UserModel", lazy="dynamic")
在这里阅读更多https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/#many-to-many-relationships
参考 - https://docs.sqlalchemy.org/en/13/orm/basic_relationships.html#many-to-many 。
您可以创建UserForum模型或users_forums表来传递关系中的辅助选项。
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(24))
forums = relationship("Forum", secondary='users_forums')
class Forum(db.Model):
__tablename__ = 'forums'
id = Column(Integer, primary_key=True)
name = Column(String(24))
users = relationship("User", secondary='users_forums')
class UserForum(db.Model):
__tablename__ = 'users_forums'
user_id = Column(Integer, ForeignKey('users.id'))
forum_id = Column(Integer, ForeignKey('forums.id'))
使用如下
user = User.query.get(1)
print(user)
<User 1>
forums = user.forums
print(forums)
[<Forum 1>, <Forum 2>]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.