Flask - SQLAlchemy OperationalError
Я пришел к следующей ошибке:
sqlalchemy.exc.OperationalError
OperationalError: (OperationalError) no such table: user u'SELECT user.id AS user_id, user.name AS user_name, user.password AS user_password \nFROM user \nWHERE user.id = ?' (1,)
Я не уверен, как отладить это, но я думаю, что это должно произойти, потому что он не загружает файл БД, который я уже сгенерировал, используя мой файл models.py. Я загрузил этот файл базы данных и убедился, что таблица пользователей существует, и она работает с данными, но я не могу понять, как подключить мое приложение-колбу к базе данных.
Вот мой models.py, который я запустил заранее для генерации таблиц (я не включал объявления над ним):
from datetime import datetime
import os
from sqlalchemy import Column, ForeignKey
from sqlalchemy import Boolean, DateTime, Integer, String, Text
from sqlalchemy.orm import relationship, synonym, backref
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
""" User """
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(200))
password = Column(String(100))
def __init__(self, name, password):
self.name = name
self.password = password
def __repr__(self):
return '<User %r>' % self.name
if __name__ == '__main__':
from datetime import timedelta
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
PWD = os.path.abspath(os.curdir)
engine = create_engine('sqlite:///{}/arkaios.db'.format(PWD), echo=True)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# Add a sample user
user = User(name='Philip House', password="test")
session.add(user)
session.commit()
Вот app.py:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask import render_template
from arkaios.models import Base, User
from arkaios import config
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
db.Model = Base
@app.route('/admin/large-group')
def largeGroupOverview():
user = db.session.query(User).filter_by(id=1)
return render_template('largegroup/overview.html', user=user)
@app.route('/admin/large-group/<int:event_id>')
def largeGroupAttendance(event_id):
return render_template('largegroup/attendance.html')
@app.route('/focus')
def largegroup():
return 'Focus work'
И, наконец, app.py ссылается на config.py, который находится ниже:
import os
PWD = os.path.abspath(os.curdir)
DEBUG=True
SQLALCHEMY_DATABASE_URI = 'sqlite:///{}/arkaios.db'.format(PWD)
SECRET_KEY = 'thisissecret'
SESSION_PROTECTION = 'strong'
Я могу также опубликовать трассировку стека, если это будет необходимо! Должно быть, что-то концептуально отсутствует в том, как я думаю о том, как соединить Flask и SQLAlchemy, но я не могу понять это.
Спасибо за любую помощь:)
1 ответ
Ты бежишь python models.py
до python app.py
приложение для создания базы данных? if __name__ == "__main__"
будет препятствовать выполнению этой части кода при импорте файла из app.py
,
Я также хотел бы убедиться, что БД действительна, используя sqlite3
и запустить .tables
команда.