Python 在具有一对多关系的两个表之间使用db.create_all()创建表时出错
我有两个表,在它们之间创建了一个多个关系,但是在导入db对象并使用db.create_all()时,我得到了以下错误 sqlalchemy.exc.norReferencedTableError:与关联的外键 列“addresses.user_id”找不到要使用的表“user” 为目标列“id”生成外键 完整代码如下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
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.昵称)