Задать вопрос
desulaid
@desulaid
Я тупею каждый день

Почему не создается база данных в Flask-SQLAlchemy?

Мой проект выглядит так:
web-app
  app
    __init_.py
    config.py
    models.py


models.py
from app import db


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(35), nullable=False)
    email = db.Column(db.String(256), unique=True, nullable=False)
    password = db.Column(db.String(256), nullable=False)


__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from app.components import (
    account,
    dashboard,
    error
)

app = Flask(__name__)
app.config.from_pyfile('config.py')

db = SQLAlchemy(app)

app.register_blueprint(account)
app.register_blueprint(dashboard)
app.register_blueprint(error)


ну и config.py
from os import environ

SECRET_KEY = environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = environ.get('SQLALCHEMY_DATABASE_URI')
SQLALCHEMY_TRACK_MODIFICATIONS = environ.get('SQLALCHEMY_TRACK_MODIFICATIONS')


Вот в чем проблема:
Почему-то у меня создается пустая база данных.
  • Вопрос задан
  • 2821 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
desulaid
@desulaid Автор вопроса
Я тупею каждый день
Проблему решил. Суть в том, что перед созданием бд необходимо для начала импортировать таблицы ДО вызова create_all().

Я работаю в PyCharm и вот мой (возможно, что неказистый) способ решения. Открываем Python Console и импортируем сначала таблицы, потом все остальное.

from app.models import *
from app import app, db
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db.create_all()


app.config['SQLALCHEMY_DATABASE_URI'] пишу вручную, так как env переменные не подхватываются.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Wispik
@Wispik
Потому что ты нигде в коде не создаёшь бд
документация
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы