首页 > 解决方案 > 没有这样的表:用户 [SQL: INSERT INTO users (username) VALUES (?)] sqlalchemy.exc.OperationalError: (sqlite3.OperationalError)

问题描述

IDE 无法识别tablename = 'users' 我觉得下面附加的代码有问题

from puppycompanyblog import db
from flask_login import UserMixin


class User(db.Model, UserMixin):
    # Creating a table
    __tablename__ = 'users'
    # attributes table columns
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)

    def __init__(self, username):
        self.username = username

    def __repr__(self):
        return f"UserName: {self.username}"

标签: sqliteflaskmigrate

解决方案


您需要先调用,db.create_all()然后才能将用户添加到您的表中,目前您的数据库中没有这样的表。

这是一个有用的代码片段,可将 flask cli 命令添加flask initdb到您的项目中,您可以在运行应用程序之前使用该命令创建或删除数据库。

import click

@app.cli.command()
@click.option('--drop', is_flag=True, help='Create after drop')
def initdb(drop):
    '''Initialize database'''
    if drop:
        click.confirm('This operation will delete the database, do you want to continue', abort=True)
        db.drop_all()
        click.echo('Database dropped.')
    db.create_all()
    click.echo('Database Initialized.')

推荐阅读