我有一个非常基本的Flask / SqlAlchemy项目,这里有一条路由。
https://github.com/thenetimp/flask_base_v2
在路由中,我从User模型创建了一个用户对象,但是当我调用路由时,出现以下错误
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such
table: user
[SQL: INSERT INTO user (email_address, password, first_name, last_name, created_on, updated_on) VALUES (?, ?, ?, ?, ?, ?)]
[parameters: ('jdoe@gmail.com', b'$2b$12$emg2oQcGeK0LEg5IFgie8eOEn2MJ/gKzyGWRPqOGJcQqlM1kCyskK', 'John', 'Doe', '2019-05-05 01:12:29.339788', '2019-05-05 01:12:29.339805')]
(Background on this error at: http://sqlalche.me/e/e3q8)
在应用程序工厂create_app()
函数中,我正在调用db.create_all()
来更新数据库并创建表,但事实并非如此。其他具有类似问题的堆栈溢出问题都表明使用了错误的数据库引用,但是我不知道如何解决它,因此我使用的是正确的引用。
我已经搜索了stackoverflow,但是类似问题的答案并没有帮助我的用例/应用程序结构(如果可能的话,我希望保持不变)。
如果有人可以看一下,我将不胜感激。
答案 0 :(得分:0)
我正在使用的文章中使用了一个示例:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
声明类。但是,这并未将模型附加到数据库实例。更改类声明以扩展db.Model
可以解决此问题。