Ошибка при создании БД на Python Flask
Сразу говорю я новичок и в программировании полный пень, могу сразу что то не понять. У меня есть основной код который я по гайдам делал в VS Code. Сейчас я пытаюсь создать базу данных, дабы наконец создать простенькую функцию написания статей и регистрации.
from flask import Flask, render_template, url_for
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///StationComic.db'
db = SQLAlchemy(app)
class Users(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(50), unique=True)
psw = db.Column(db.String(50), nullable=False)
UserDate = db.Column(db.DateTime, default=datetime.utcnow)
def __repr__(self):
return f"<users {self.id}>"
class Profiles(db.Model):
id = db.Column(db.Integer, primary_key=True)
nickname = db.Column(db.String(100), nullable=False)
realName = db.Column(db.String(100), nullable=False)
old = db.Column(db.Integer, nullable=False)
UserId = db.Column(db.Integer, db.ForeignKey('users.id'))
class article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
intro = db.Column(db.String(300), nullable=False)
text = db.Column(db.Text, nullable=False)
date = db.Column(db.DateTime, default=datetime.utcnow)
def __repr__(self):
return '<article %r>' % self.id
@app.route('/')
@app.route('/home')
def index():
return render_template("index.html")
@app.route('/news')
def news():
return render_template("news.html")
@app.route('/Registration')
def regist():
return render_template("registration.html")
@app.route('/user/<string:name>/<int:id>')
def user(name, id):
return "User page: " + name + " - " + str(id)
if __name__ == "__main__":
with app.app_context():
db.create_all()
app.run(debug=True)
После его написании я ввожу в консоли: Python, from app import db и db.create_all(). Но у меня всё время вылазит ошибка и не удаётся создать БД. У меня вылазит список ошибок.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\User\Documents\test\StationUniversum\venv\Lib\site-packages\flask_sqlalchemy\extension.py", line 900, in create_all
self._call_for_binds(bind_key, "create_all")
File "C:\Users\User\Documents\test\StationUniversum\venv\Lib\site-packages\flask_sqlalchemy\extension.py", line 871, in _call_for_binds
engine = self.engines[key]
^^^^^^^^^^^^
File "C:\Users\User\Documents\test\StationUniversum\venv\Lib\site-packages\flask_sqlalchemy\extension.py", line 687, in engines
app = current_app._get_current_object() # type: ignore[attr-defined]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\Documents\test\StationUniversum\venv\Lib\site-packages\werkzeug\local.py", line 508, in _get_current_object
raise RuntimeError(unbound_message) from None
RuntimeError: Working outside of application context.
This typically means that you attempted to use functionality that needed
the current application. To solve this, set up an application context
with app.app_context(). See the documentation for more information.
Ответы (1 шт):
Автор решения: Bor-is-luv
→ Ссылка
Стоит попробовать вот так
from app import db, app
with app.app_context():
db.create_all()
Тогда, судя по traceback, ошибка уйдёт. Но обращаю внимание, аналогичный код выполняется на старте приложения, поэтому, возможно, создавать бд из консоли не нужно