由于某些原因,flask-sqlalchemy在apache + mod_wsgi下运行时似乎遇到了解决sqlite表问题的问题。在mod_wsgi下flask-sqlalchemy“no such table”
简化例如:
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表()'? – ahmed
你检查了sqlite数据库文件的权限吗?如果Apache没有创建它,请确保Apache有权读取它。 –
是的 - 用db.create_all()创建的表[请注意,python myapp.py工程] – shreddd