2015-12-30 26 views
0

故障主机烧瓶应用我上pythonanywhere

我第一次通过bash的控制台从GitHub做我的代码一个git克隆开始pythonanywhere的第一次使用。我没有使用虚拟环境。我的WSGI应用程序在我的app.py文件中被调用。另外,我的代码使用sqlalchemy与我的数据库进行交互。

基本上,烧瓶应用程序就像是一个自定义API,它返回JSON的GET和POST请求,我无法查看JSON输出。我不知道我究竟做错了什么或失踪。

守则app.py文件:

#!flask/bin/python 
from flask import Flask 
from sqlalchemy import create_engine 
from sqlalchemy.orm import sessionmaker 
from sqlalchemy_declarative import Base, Quote 
from flask import request 
from flask import abort 
import json 

#connect to database 

engine = create_engine("sqlite:///quotes.db") 

Base.metadata.bind = engine 
DBSession = sessionmaker(bind=engine) 
session = DBSession() 

app = Flask(__name__) 

@app.route("/trumptext/api/quotes", methods=["GET"]) 
def get_quotes(): 
    quoteList = session.query(Quote).all() 
    result = [] 
    for q in quoteList: 
     my_dict = {} 
     my_dict["id"] = q.id 
     my_dict["quote"] = q.quote 
     result.append(my_dict) 
    return json.dumps(result,ensure_ascii=False).encode('utf8') 

@app.route("/trumptext/api/quotes", methods=["POST"]) 
def add_quote(): 
    if not request.json or not "quote" in request.json: 
     abort(400) 
    new_quote = request.json["quote"] 
    q = Quote(quote=new_quote) 
    session.add(q) 
    session.commit() 
    quoteList = session.query(Quote).all() 
    last = quoteList[-1] 
    result = [] 
    my_dict = {} 
    my_dict["id"] = last.id 
    my_dict["quote"] = last.quote 
    result.append(my_dict) 
    return json.dumps(result,ensure_ascii=False).encode('utf8'), 201 


if __name__ == "__main__": 
    app.run() 

此外,在/var/www/nnelson_pythonanywhere_com_wsgi.py代码:

import os 
import sys 

path = '/home/nnelson/trumptextapi' 
if path not in sys.path: 
    sys.path.append(path) 

from app import app as application 

如果我输入类似: http://nnelson.pythonanywhere.com/trumptext/api/quotes(执行GET请求)

它应该理想情况下返回存储在JSON格式的quotes.db数据库中的所有引号,但是我得到它的输出看起来像e这:[]我使用curl工具在本地主机上测试了我的代码,它工作得很好。我有麻烦托管它虽然

任何帮助表示赞赏。

回答

3

您正在使用数据库的相对路径,因此它可能正在查看您不希望的数据库。使用数据库的完整路径或使其相对于app.py文件的路径,以便知道从哪里获取数据库。

+0

换句话说,我应该这样做:engine = create_engine(“sqlite:////home/nnelson/trumptextapi/quotes.db”)?编辑:这工作。非常感谢! – Nikhil