[英]Trouble Hosting flask app on pythonanywhere
我是pythonanywhere的首次用戶
我首先通過bash控制台從github對我的代碼進行git克隆。 我沒有使用虛擬環境。 在我的app.py文件中調用了我的WSGI應用程序。 另外,我的代碼使用sqlalchemy與我的數據庫進行交互。
基本上,flask應用程序就像一個自定義api,它為GET和POST請求返回JSON,而我在查看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數據庫中的所有引號,但是我得到的所有輸出看起來都像這樣:[]我使用curl工具在本地主機上測試了代碼,並且工作正常。 我在托管它時遇到了麻煩
任何幫助表示贊賞。
您正在使用數據庫的相對路徑,因此它可能正在查看您不期望的數據庫。 使用數據庫的完整路徑或使其相對於app.py文件的路徑,以使您知道從何處獲取數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.