【发布时间】:2015-09-26 05:53:49
【问题描述】:
由于某种原因,flask-sqlalchemy 在 apache + mod_wsgi 下运行时似乎无法解析 sqlite 表。
简化示例:
from models import db, User
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/zop.sqlite3'
db.init_app(app)
models.py:
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(120), unique=True)
...
当我通过python myapp.py 运行我的应用程序时,它基本上可以正常工作
但是当我在 apache + mod_wsgi 下运行它时,当我运行 User.query.filter_by(name=username).first() 之类的东西时出现以下错误:
OperationalError: (sqlite3.OperationalError) no such table: user [SQL: u'SELECT user.id AS user_id, user.name AS user_name, user.email AS user_email \\nFROM user \\nWHERE user.name = ?\\n LIMIT ? OFFSET ?'] [parameters: ('foo', 1, 0)]
我需要改变什么才能让它在 apache+mod_wsgi 下工作吗?
【问题讨论】:
-
您是否使用
db.create_all()创建了表? -
你检查过sqlite db文件的权限吗?如果 Apache 没有创建它,请确保 Apache 有权读取它。
-
是 - 使用 db.create_all() 创建的表 [注意 python myapp.py 有效]
-
还将 sqlite 文件的权限更改为 777 - 无济于事。
标签: python sqlite flask sqlalchemy mod-wsgi