Flask sqlite не создает таблиц - PullRequest
0 голосов
/ 08 апреля 2020

Flask sqlite ничего не возвращает, когда я вызываю функцию

sqlite3
.tables

Поэтому я предполагаю, что она пуста, однако, когда я набираю

User.query.all() 

, я вижу, что таблицы существуют.

Все работало отлично, пока я не попытался добавить расширение Flask -migrate. Так как раньше он работал отлично, и я не изменил код, связанный с моделями или sqlite, я не думаю, что это из-за ошибки кода.

Также я не могу войти на сайт, он возвращается (опубликовать 200 успешно, но я не могу войти), однако я МОГУ зарегистрироваться успешно. Все произошло после того, как я реализовал функцию flask -migrate, но я удалил все, что связано с миграцией flask, но проблема остается той же. Я пытался много гуглить, но не смог найти ничего, что решило бы его.

Сам код не выдает никакой ошибки

Вот мой init

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager


app = Flask(__name__)

app.config['SECRET_KEY'] = 'thisissecretkey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SECURITY_PASSWORD_SALT'] = 'thisispasswordsalt'


db = SQLAlchemy(app)

bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = "sign_in"
login_manager.login_message_category = 'info'


from debugger import routes

вот файл models.py

from . import db,login_manager
from datetime import datetime
from flask_security import Security, SQLAlchemyUserDatastore, login_required,UserMixin, RoleMixin
from run import app


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

user_roles = db.Table('user_roles',
        db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
        db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))

class User(db.Model,UserMixin):
    id = db.Column(db.Integer,primary_key=True)
    first_name = db.Column(db.String(20),nullable=False)
    last_name = db.Column(db.String(20),nullable=False)
    email = db.Column(db.String(100), unique=True, nullable=False)
    is_active = db.Column(db.Boolean())
    password = db.Column(db.String(50),nullable=False)
    user_role = db.relationship('Role',secondary='user_roles',backref='user',lazy='dynamic')

    def is_active(self):
        return True

    def __repr__(self):
        return f"User('{self.first_name}',{self.last_name}','{self.email}','{self.password}')"

class Role(db.Model,RoleMixin):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(40), unique=True)

    def __repr__(self):
        return f"User('{self.name}')"




user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)

и файл маршрутов:

@app.route('/sign-in',methods=['GET','POST'])
def sign_in():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and bcrypt.check_password_hash(user.password, form.password.data):
            login_user(user,remember=form.remember.data)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(url_for('index'))
        else:
            flash('Login Unsuccessful.','danger')
    return render_template('signin.html',form=form)

run.py

from debugger import app


if __name__ == '__main__':
    app.run(debug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...