Flask-SQLAlchemy 一对多关系:多方两个字段外键示例
本文将提供一个 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 模型类表示帖子。User 和 Post 之间是一对多的关系,其中多方(Post)有两个字段都是1的外键(user_one_id 和 user_two_id)。User 模型类中的 posts_one 和 posts_two 分别表示用户发布的帖子,通过 backref 参数定义了反向引用。
这里使用的数据库是 SQLite,可以根据需要更改为其他数据库。在 if __name__ == '__main__' 中,使用 db.create_all() 创建数据库表,并使用 app.run() 运行 Flask 应用。
原文地址: https://www.cveoy.top/t/topic/p9Rj 著作权归作者所有。请勿转载和采集!