python - Flask/SQLAlchemy - 创建具有一对多关系的模型时出错(一个或多个映射器无法初始化......)
问题描述
我试图在这两个表(“用户”和“行星”)之间建立一对多的关系,但出现此错误:
一个或多个映射器未能初始化 - 无法继续初始化其他映射器。触发映射器:'映射类用户->用户'。最初的例外是:无法确定关系 User.planet 上的父/子表之间的连接条件 - 没有链接这些表的外键。确保引用列与 ForeignKey 或 ForeignKeyConstraint 相关联,或指定“primaryjoin”表达式。
我已经看到了这个问题的答案,但没有一个有效,我不知道问题出在哪里?
我还想将 2 个模型分成 2 个不同的文件,在这种情况下如何工作?
非常感谢你的帮助。
from sqlalchemy import Column, Integer, String, FLOAT
from app import db, ma
# database models:
class User(db.Model):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
first_name = Column(String)
last_name = Column(String)
email = Column(String, unique=True)
password = Column(String)
planet = db.relationship('Planet', backref='users', lazy='dynamic')
class Planet(db.Model):
__tablename__ = 'planets'
planet_id = Column(Integer, primary_key=True)
planet_name = Column(String)
planet_type = Column(String)
home_star = Column(String)
mass = Column(FLOAT)
radius = Column(FLOAT)
distance = Column(FLOAT)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class UserSchema(ma.Schema):
class Meta:
fields = ('id', 'first_name', 'last_name', 'email', 'password')
class PlanetSchema(ma.Schema):
class Meta:
fields = ('planet_id', 'planet_name', 'planet_type', 'home_star', 'mass', 'radius', 'distance')
#__init__.py
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
import os
from flask_marshmallow import Marshmallow
from flask_jwt_extended import JWTManager, jwt_required, create_access_token
# from flask_cors import CORS, cross_origin
db = SQLAlchemy()
ma = Marshmallow()
jwt = JWTManager()
def create_app():
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'planets.db')
app.config['JWT_SECRET_KEY']='super_secret'
# cors = CORS(app)
# app.config['CORS_HEADERS'] = 'Content-Type'
db.init_app(app)
ma.init_app(app)
jwt.init_app(app)
# jwt = JWTManager(app)
from views import planet, users
app.register_blueprint(planet.main)
app.register_blueprint(users.users)
return app
解决方案
推荐阅读
- javascript - 为什么我的 If 循环没有为我的第二个关键代码移动
- javascript - 如何在将哈巴狗渲染成 HTML 时删除“>”
- eclipse - JAX RS 自定义验证 eclipse 插件
- asp.net-core - Stripe.StripeException: 'Issuing API 目前处于私有测试阶段。请访问 https://stripe.com/issues 了解更多信息。
- jenkins - wget:在 Jenkins 管道中找不到命令
- visual-studio-code - 如何修复 vs code / textmate 语言配置中的注释
- azure - 我可以备份存储在 Azure 托管实例中的服务主密钥吗?
- oracle - 检查输入日期是否不在第一行到最后一行plsql中的date1和date2之间
- html - 如何修复引导手风琴卡标题中不稳定的列间距?
- javascript - 如何将毫秒添加到日期时间对象