Почему база данных не видит таблицу? - PullRequest
0 голосов
/ 28 апреля 2020

Я свободен sh до flask, и я был бы очень признателен, если кто-то может мне помочь, потому что я не могу справиться с этой проблемой весь день. Я определил таблицу с именем «users», затем запустил main.py, и все в порядке. Но когда я пытаюсь обновить таблицу, ошибка
"sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users" occures. Пожалуйста, помогите, я чувствую себя действительно беспомощным.

Вот мой код:

project \ main.py

from flask import Flask
from data import db_session

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'

db_session.global_init("db/blogs.sqlite")


def main():
    app.run()


if __name__ == '__main__':
    main()

project \ data \ db_session.py

import sqlalchemy as sa
import sqlalchemy.orm as orm
from sqlalchemy.orm import Session
import sqlalchemy.ext.declarative as dec


SqlAlchemyBase = dec.declarative_base()

__factory = None


def global_init(db_file):
    global __factory

    if __factory:
        return

    if not db_file or not db_file.strip():
         raise Exception("You must specify a database file.")

    conn_str = f'sqlite:///{db_file.strip() check_same_thread=False'
    print(f"Connect to the database at {conn_str}")

    engine = sa.create_engine(conn_str, echo=False)
    __factory = orm.sessionmaker(bind=engine)

    from data import __all_models

    SqlAlchemyBase.metadata.create_all(engine)


def create_session() -> Session:
    global __factory
    return __factory()

project \ data__all_models.py

from data import users

project \ data \ users.py

import datetime
import sqlalchemy
from data.db_session import SqlAlchemyBase 
from data import db_session


class User(SqlAlchemyBase):
    __tablename__ = 'users'

    id = sqlalchemy.Column(sqlalchemy.Integer,
                       primary_key=True, autoincrement=True)
    name = sqlalchemy.Column(sqlalchemy.String, nullable=True)
    about = sqlalchemy.Column(sqlalchemy.String, nullable=True)
    email = sqlalchemy.Column(sqlalchemy.String,
                          index=True, unique=True, nullable=True)
    hashed_password = sqlalchemy.Column(sqlalchemy.String, nullable=True)
    created_date = sqlalchemy.Column(sqlalchemy.DateTime,
                                 default=datetime.datetime.now)




user = User()
user.name = "user 1"
user.about = "user's bio"
user.email = "email@email"
session = db_session.create_session()
session.add(user)
session.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...