【发布时间】:2020-03-28 15:09:02
【问题描述】:
好的,所以我有我的表,用 repr 类定义布置,当我尝试在 python 中使用 db.create_all() 时出现此错误
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'subuser_table.userid' could not find table 'usersTable' with which to generate a foreign key to target column 'userid'
我的代码如下所示:
db = SQLAlchemy(app)
class usersTable(db.Model):
userid = db.Column(db.Integer, primary_key=True)
fname = db.Column(db.String, nullable=False)
lname = db.Column(db.String, nullable=False)
email = db.Column(db.String, unique=True, nullable=False)
username = db.Column(db.String, unique=True, nullable=False)
password = db.Column(db.String, nullable=False)
joined = db.Column(db.Date, nullable=False)
package = db.Column(db.String, nullable=False)
subuser = db.relationship('Subuser', backref='user', lazy=True)
def __repr__(self):
return f"users_table({self.fname}, {self.lname}, {self.email}, {self.username}, {self.password}, {self.joined}, {self.package})"
class subuserTable(db.Model):
userid = db.Column(db.Integer, db.ForeignKey('users_table.userid'), nullable=False)
subid = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String, unique=True, nullable=False)
password = db.Column(db.String, nullable=False)
fname = db.Column(db.String, nullable=False)
lname = db.Column(db.String, nullable=False)
admin = db.Column(db.Boolean, default=False)
def __repr__(self):
return f"subuser_table({self.fname}, {self.lname}, {self.email}, {self.username}, {self.password}, {self.joined}, {self.package})"
我的 URI 确实在另一个文件中,并且它确实链接到了数据库。由于约束错误,我无法创建这些表。如果有人有任何想法,请告诉我
【问题讨论】:
-
错误和提供的代码似乎不匹配。您拥有
db.ForeignKey('users_table.userid'),但错误表明您将拥有db.ForeignKey('usersTable.userid')。 -
我已经修复了,在另一个文件中遗留了一个工件
标签: python sqlite flask sqlalchemy flask-sqlalchemy