本文将提供一个 Flask-SQLAlchemy 示例,展示如何创建一个一对多关系,其中多方有两个字段都是1的外键。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

    # 两个字段都是1的外键
    posts_one = db.relationship('Post', backref='user_one', lazy=True, foreign_keys='Post.user_one_id')
    posts_two = db.relationship('Post', backref='user_two', lazy=True, foreign_keys='Post.user_two_id')


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    content = db.Column(db.Text)
    user_one_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user_two_id = db.Column(db.Integer, db.ForeignKey('user.id'))


if __name__ == '__main__':
    db.create_all()
    app.run()

在上面的例子中,User 模型类表示用户,Post 模型类表示帖子。UserPost 之间是一对多的关系,其中多方(Post)有两个字段都是1的外键(user_one_iduser_two_id)。User 模型类中的 posts_oneposts_two 分别表示用户发布的帖子,通过 backref 参数定义了反向引用。

这里使用的数据库是 SQLite,可以根据需要更改为其他数据库。在 if __name__ == '__main__' 中,使用 db.create_all() 创建数据库表,并使用 app.run() 运行 Flask 应用。

Flask-SQLAlchemy 一对多关系:多方两个字段外键示例

原文地址: https://www.cveoy.top/t/topic/p9Rj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录