Python 在具有一对多关系的两个表之间使用db.create_all()创建表时出错

Python 在具有一对多关系的两个表之间使用db.create_all()创建表时出错,python,flask-sqlalchemy,Python,Flask Sqlalchemy,我有两个表,在它们之间创建了一个多个关系,但是在导入db对象并使用db.create_all()时,我得到了以下错误 sqlalchemy.exc.norReferencedTableError:与关联的外键 列“addresses.user_id”找不到要使用的表“user” 为目标列“id”生成外键 完整代码如下 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app

我有两个表,在它们之间创建了一个多个关系,但是在导入db对象并使用db.create_all()时,我得到了以下错误

sqlalchemy.exc.norReferencedTableError:与关联的外键 列“addresses.user_id”找不到要使用的表“user” 为目标列“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)
从烧瓶导入烧瓶
从flask_sqlalchemy导入sqlalchemy
app=烧瓶(名称)
app.config['SQLALCHEMY\u DATABASE\u URI']='sqlite:///relationships.db'
db=SQLAlchemy(应用程序)
类地址(db.Model):
__tablename_uu='地址'
id=db.Column(db.Integer,主键=True)
email_address=db.Column(db.String,nullable=False)
user\u id=db.Column(db.Integer,db.ForeignKey('user.id'))
user=db.relationship(“user”,back_populates=“addresses”)
定义报告(自我):
返回“%self.email\u地址”
类用户(db.Model):
__tablename_uu='users'
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(50))
fullname=db.Column(db.String(50))
昵称=db.Column(db.String(50))
地址=数据库关系(“地址”,back_populates=“用户”)
定义报告(自我):
返回“”%(
self.name、self.fullname、self.昵称)

如果你能指出错误,那将是很大的帮助。谢谢阅读我的问题。

我刚刚注释掉了两个类中的表名,它开始工作了

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)
从烧瓶导入烧瓶
从flask_sqlalchemy导入sqlalchemy
app=烧瓶(名称)
app.config['SQLALCHEMY\u DATABASE\u URI']='sqlite:///relationships.db'
db=SQLAlchemy(应用程序)
类地址(db.Model):
#_uuutablename_uuuuu='地址'
id=db.Column(db.Integer,主键=True)
email_address=db.Column(db.String,nullable=False)
user\u id=db.Column(db.Integer,db.ForeignKey('user.id'))
user=db.relationship(“user”,back_populates=“addresses”)
定义报告(自我):
返回“%self.email\u地址”
类用户(db.Model):
#\uuuu tablename\uuuuuu='users'
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(50))
fullname=db.Column(db.String(50))
昵称=db.Column(db.String(50))
地址=数据库关系(“地址”,back_populates=“用户”)
定义报告(自我):
返回“”%(
self.name、self.fullname、self.昵称)