У меня проблемы с flask -sqlalchemy.
У меня есть файл model.py
from app import app, db
from config import (SQLALCHEMY_DATABASE_URI, SQLALCHEMY_ECHO,
SQLALCHEMY_TRACK_MODIFICATION)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = SQLALCHEMY_TRACK_MODIFICATION
app.config['SQLALCHEMY_ECHO'] = SQLALCHEMY_ECHO
class Comic(db.Model):
__tablename__ = 'Comic'
comicId = db.Column(db.Integer,primary_key=True)
comicName = db.Column(db.String(100),unique=True,nullable=False)
comicAuthor = db.Column(db.String(100),unique=False,nullable=True)
comicPrice = db.Column(db.Numeric(20,2),unique=False,nullable=True)
comicDescription = db.Column(db.String(500),unique=False,nullable=True)
comicStatus = db.Column(db.String(50),unique=False,nullable=True)
comicImage = db.Column(db.String(250),unique=False,nullable=True)
def returnComic():
Comic.query.all()
class User(db.Model):
__tablename__ = 'User'
userId = db.Column(db.Integer,primary_key=True)
userName = db.Column(db.String(25),unique=True,nullable=False)
passWord = db.Column(db.String(10),nullable=False)
email = db.Column(db.String(25),unique=True,nullable=False)
class Favorite(db.Model):
__tablename__ = 'Favorite'
userId = db.Column(db.Integer,db.ForeignKey('user.userId'),nullable=False,primary_key=True)
comicId = db.Column(db.Integer,db.ForeignKey('comic.comicId'),nullable=False)
Внутри моего файла app.py есть все мои маршруты
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
import model
app = Flask(__name__)
bootstrap = Bootstrap(app)
db = SQLAlchemy(app)
@app.route('/')
def index():
results = model.Comic.returnComic()
return render_template("index.html", results=results)
@app.route('/overview')
def overview(page=1):
results = db.session.query(comics).all()
return render_template("overview.html", results=results)
@app.route('/overview/details')
def details():
return render_template("detail.html")
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
У меня также есть конфигурация. py файл
SQLALCHEMY_DATABASE_URI= "mysql+pymysql://root:@localhost/scraper"
SQLALCHEMY_TRACK_MODIFICATION = False
SQLALCHEMY_ECHO = True
Ошибка возникает, когда я go индексирую маршрут, я хотел бы отобразить некоторые данные из базы данных внутри файла HTML, но он дает трассировку стека
sqlalchemy.exc.OperationalError
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: Comic
[SQL: SELECT "Comic"."comicId" AS "Comic_comicId", "Comic"."comicName" AS "Comic_comicName", "Comic"."comicAuthor" AS "Comic_comicAuthor", "Comic"."comicPrice" AS "Comic_comicPrice", "Comic"."comicDescription" AS "Comic_comicDescription", "Comic"."comicStatus" AS "Comic_comicStatus", "Comic"."comicImage" AS "Comic_comicImage"
FROM "Comic"]
(Background on this error at: http://sqlalche.me/e/e3q8)
Traceback (most recent call last)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1283, in _execute_context
self.dialect.do_execute(
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 590, in do_execute
cursor.execute(statement, parameters)
The above exception was the direct cause of the following exception:
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\laragon\www\Proftaak\app.py", line 12, in index
results = model.Comic.returnComic()
File "C:\laragon\www\Proftaak\model.py", line 21, in returnComic
Comic.query.all()
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\orm\query.py", line 3319, in all
return list(self)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\orm\query.py", line 3481, in __iter__
return self._execute_and_instances(context)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\orm\query.py", line 3506, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1020, in execute
return meth(self, multiparams, params)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1133, in _execute_clauseelement
ret = self._execute_context(
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1323, in _execute_context
self._handle_dbapi_exception(
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1517, in _handle_dbapi_exception
util.raise_(
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\util\compat.py", line 178, in raise_
raise exception
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1283, in _execute_context
self.dialect.do_execute(
File "C:\laragon\www\Proftaak\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 590, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: Comic
[SQL: SELECT "Comic"."comicId" AS "Comic_comicId", "Comic"."comicName" AS "Comic_comicName", "Comic"."comicAuthor" AS "Comic_comicAuthor", "Comic"."comicPrice" AS "Comic_comicPrice", "Comic"."comicDescription" AS "Comic_comicDescription", "Comic"."comicStatus" AS "Comic_comicStatus", "Comic"."comicImage" AS "Comic_comicImage"
FROM "Comic"]
(Background on this error at: http://sqlalche.me/e/e3q8)
Теперь я немного погуглил, и, кажется, проблема заключается в том, что сначала запрашивается база данных, прежде чем модели могут быть созданы?
также предполагается переделывать базу данных всякий раз, когда я использую flask -run?