创建数据表时,外键无法发现主键id,创建失败
来源:5-1 首页问题列表开发
科伟
2022-02-08 20:11:52
问题描述:
根据教程创建好ORM模型,并按照蓝图划分好模块后,在PythonConsole中运行创建表代码时,报错
相关截图:
相关代码:
class User(db.Model): """ 用户账户模型 """ __tabelname__ = 'accounts_user' id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='用户ID') username = db.Column(db.String(64), unique=True, nullable=False, comment='用户名') nickname = db.Column(db.String(64), comment='用户昵称') password = db.Column(db.String(256), nullable=False, comment='密码') avatar = db.Column(db.String(256), comment='用户头像') status = db.Column(db.SmallInteger, default=constants.UserStatus.USER_ACTIVE.value, comment='用户状态') is_super = db.Column(db.SmallInteger, default=constants.UserRole.COMMON.value, comment='是否为超级用户') created_at = db.Column(db.DateTime, default=datetime.now, comment='注册时间') updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间') class UserProfile(db.Model): """ 用户详细信息模型 """ __tablename__ = 'accounts_user_profile' id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='id') user_id = db.Column(db.Integer, db.ForeignKey('accounts_user.id'), nullable=False, comment='用户ID') username = db.Column(db.String(64), nullable=False, comment='用户名 冗余字段') real_name = db.Column(db.String(64), comment='真实姓名') sex = db.Column(db.String(32), comment='用户性别') maxim = db.Column(db.String(256), comment='用户格言') address = db.Column(db.String(256), comment='用户地址') created_at = db.Column(db.DateTime, default=datetime.now(), comment='新增时间') updated_at = db.Column(db.DateTime, default=datetime.now(), onupdate=datetime.now(), comment='修改时间') # 建立用户一对一关系属性,user.profile user = db.relationship('User', backref=db.backref('profile', uselist=False))
错误提示
相关代码:
Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\flask_sqlalchemy\__init__.py", line 1094, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\flask_sqlalchemy\__init__.py", line 1086, in _execute_for_all_tables op(bind=self.get_engine(app, bind), **extra) File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\sql\schema.py", line 4785, in create_all bind._run_ddl_visitor( File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\engine\base.py", line 3117, in _run_ddl_visitor conn._run_ddl_visitor(visitorcallable, element, **kwargs) File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\engine\base.py", line 2113, in _run_ddl_visitor visitorcallable(self.dialect, self, **kwargs).traverse_single(element) File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\sql\visitors.py", line 524, in traverse_single return meth(obj, **kw) File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\sql\ddl.py", line 825, in visit_metadata collection = sort_tables_and_constraints( File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\sql\ddl.py", line 1289, in sort_tables_and_constraints dependent_on = fkc.referred_table File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\sql\schema.py", line 3705, in referred_table return self.elements[0].column.table File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 1113, in __get__ obj.__dict__[self.__name__] = result = self.fget(obj) File "C:\Users\Administrator\Desktop\qa_flask\venv\lib\site-packages\sqlalchemy\sql\schema.py", line 2410, in column raise exc.NoReferencedTableError( sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'accounts_user_profile.user_id' could not find table 'accounts_user' with which to generate a foreign key to target column 'id'
不知道是哪里出了问题,请老师解答,谢谢。
1回答
同学,你好!__tablename__写错了,修改一下即可
祝学习愉快!
相似问题
回答 1