带有饼干烧瓶的数据库

问题描述 投票:0回答:2

我想使用 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

python sqlite flask sqlalchemy cookiecutter
2个回答
0
投票
import os
basedir = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'dev.db')

我假设您的项目文件夹中有一个 dev.db 文件。那么告诉flask和sqlite这个文件所在位置的正确方法是使用如上所示的绝对路径


0
投票

问题已解决: 我必须在 shell 中运行

flask db init
flask db migrate
flask db upgrade
© www.soinside.com 2019 - 2024. All rights reserved.