由於某些原因,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