我正在尝试使用Flask将SQLite数据库移动到Heroku,以便可以从一些设备访问它。我将数据库推送到我在本地创建的Heroku中,因此我知道该表存在。
Client.py
import requests, json
url = "https://someidijustmadeup.herokuapp.com/select"
j = {}
j["sql"] = "SELECT * FROM COMICS"
r = requests.get(url, json = j)
print("Status Code", r.status_code)
rJson = json.loads(r.content.decode("utf-8"))
print(len(rJson))
Server.py
import os
from flask import (Flask, jsonify, request)
from functions.functions import (executeSqlRequest)
host = "0.0.0.0"
app = Flask(__name__)
@app.route("/select", methods = ["GET"])
def select():
rJson = request.get_json()
# Ignore the values, SELECT doesn't need them
returnDict = executeSqlRequest(rJson.get("sql", None), None)
return jsonify(returnDict)
if (__name__ == "__main__"):
port = int(os.environ.get("PORT", 5000))
app.run(host = host, port = port)
executeSqlRequest
只是查询数据库。实际的Flask应用程序很好,我可以连接到它并运行查询。
信息
cat database.db
,并且在输出中我可以看到数据库中的行,因此我知道数据在那里。它还向我显示了表的SQL。答案 0 :(得分:1)
Heroku测功机有一个ephemeral filesystem:在测功机重新启动时happens frequently(每天至少一次),您所做的任何更改都会丢失。由于SQLite是基于文件的数据库,因此与Heroku不兼容。
好消息是Heroku对客户端服务器数据库(如PostgreSQL)具有良好的支持。实际上,默认情况下它提供了PostgreSQL database。 DATABASE_URL
环境变量将为您提供用于连接到该数据库的坐标。
如果不是Postgres,您可以从插件列表中选择another data store。