首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烧瓶- SQLAlchemy OperationalError

烧瓶- SQLAlchemy OperationalError
EN

Stack Overflow用户
提问于 2014-03-09 11:02:09
回答 1查看 2.8K关注 0票数 2

我遇到了以下错误:

代码语言:javascript
复制
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文件生成的db文件。我已经加载了那个db文件,并确保users表存在,它确实存在数据,但我不知道如何将flask应用程序连接到数据库。

下面是我之前运行以生成表的models.py (我没有包含上面的声明):

代码语言:javascript
复制
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:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
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,我一定在概念上遗漏了一些东西,但我搞不清楚。

感谢您的帮助:)

EN

回答 1

Stack Overflow用户

发布于 2014-04-14 01:38:51

您是否在运行python app.py应用程序之前运行python models.py来创建数据库?当您从app.py导入文件时,if __name__ == "__main__"将阻止运行该部分代码。

我还会使用sqlite3并运行.tables命令来确保db有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22277873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档