我有2个表,它们之间创建了一对多关系,但是在导入db对象并使用db.create_all()时,出现以下错误
sqlalchemy.exc.NoReferencedTableError:与之相关的外键 列“ addresses.user_id”找不到要使用的表“用户” 生成一个外键来定位列“ id”
完整代码如下
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///relationships.db'
db = SQLAlchemy(app)
class Address(db.Model):
__tablename__ = 'addresses'
id = db.Column(db.Integer, primary_key=True)
email_address = db.Column(db.String, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
user = db.relationship("User", back_populates="addresses")
def __repr__(self):
return "<Address(email_address='%s')>" % self.email_address
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
fullname = db.Column(db.String(50))
nickname = db.Column(db.String(50))
addresses = db.relationship("Address", back_populates="user")
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
如果您可以指出错误,那将是很大的帮助。感谢您阅读我的问题。
答案 0 :(得分:0)
我只是注释掉了两个类中的表名,它开始起作用。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///relationships.db'
db = SQLAlchemy(app)
class Address(db.Model):
# __tablename__ = 'addresses'
id = db.Column(db.Integer, primary_key=True)
email_address = db.Column(db.String, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
user = db.relationship("User", back_populates="addresses")
def __repr__(self):
return "<Address(email_address='%s')>" % self.email_address
class User(db.Model):
# __tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
fullname = db.Column(db.String(50))
nickname = db.Column(db.String(50))
addresses = db.relationship("Address", back_populates="user")
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)