python - sql-alchemy sqlite 数据库问题,不允许我创建外键
问题描述
这是我的代码:
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.LargeBinary, unique=True, nullable=False)
username = db.Column(db.LargeBinary, unique=True, nullable=False)
password = db.Column(db.LargeBinary, nullable=False)
joined = db.Column(db.Date, nullable=False)
subuser = db.relationship('subuserTable', backref='userid')
class subuserTable(db.Model):
userid = db.Column(db.Integer, db.ForeignKey('usersTable.userid'))
subid = db.Column(db.Integer, primary_key=True)
username = db.Column(db.LargeBinary, unique=True, nullable=False)
password = db.Column(db.LargeBinary, nullable=False)
fname = db.Column(db.String, nullable=False)
lname = db.Column(db.String, nullable=False)
admin = db.Column(db.Boolean, default=False)
问题是每当我尝试运行时:
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'
我知道有一张usersTable
桌子,也有userid
柱子,为什么它让我这么难过?
解决方案
改变这个:
userid = db.Column(db.Integer, db.ForeignKey('usersTable.userid'))
至
userid = db.Column(db.Integer, db.ForeignKey('users_table.userid'))
来自 Flask SQLAlchemy文档:
SQLAlchemy 中需要的一些部分在 Flask-SQLAlchemy 中是可选的。例如,除非被覆盖,否则会自动为您设置表名。它派生自转换为小写的类名,并将“CamelCase”转换为“camel_case”。要覆盖表名,请设置tablename类属性。
推荐阅读
- git - git rebase -i 提交标志?
- ios - 使用 use_frameworks 时的 react-native-maps iOS 构建问题!:linkage => :static
- python - 平均一个 3D 阵列以获得较低的分辨率
- django - 将 djangos object.values dict 转换为本机数据类型?
- c - 在 Motif 中创建选项菜单
- smoothing - Meshlab Laplacian Smooth 引入了尖峰
- python - 有没有办法不用微调就可以使用bert-large作为文本分类工具?
- javascript - req.params 返回未定义(它实际上将 :itemId 作为字符串返回,所以它有点未定义)而不是 id
- python - 检测/识别如何工作(Python)?
- java - 有没有办法在返回结果集时有条件地忽略某个 JPA 实体列