我想使用 cookiecutter-flask 模板为 python 应用程序创建本地接口。我想创建一个带有数据库的注册系统。
您可以通过运行来创建 cookiecutter 项目
cookiecutter https://github.com/cookiecutter-flask/cookiecutter-flask.git
我通过输入以下内容编辑了 .env:
DATABASE_URL=sqlite:///dev.db
然后我通过使用命令 shell 创建表 users 来填充数据库 dev.db :
sqlite3 dev.db
CREATE TABLE users ( id INTEGER PRIMARY KEY, username VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL, first_name VARCHAR(255), last_name VARCHAR(255), active BOOLEAN NOT NULL, is_admin BOOLEAN NOT NULL );
我不明白为什么当我想注册新用户时,我得到
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users
我尝试创建一个新数据库,完全删除该项目并创建一个新数据库。 我也尝试使用绝对路径,但它创建了一个新错误
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
import os
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'dev.db')
我假设您的项目文件夹中有一个 dev.db 文件。那么告诉flask和sqlite这个文件所在位置的正确方法是使用如上所示的绝对路径
问题已解决: 我必须在 shell 中运行
flask db init
flask db migrate
flask db upgrade