Python Flask -添加POST数据到sqlite数据库



我使用POST将数据从python脚本发送到服务器,然后我想将该数据存储在SQLite数据库中。我当前的代码返回一个500内部服务器错误给客户端。

下面是客户端脚本:
import requests
from random import randint
def WindSpeed():
    #Creates makeshift WindSpeed data to send to server
    return randint(0,20)

def Temp():
    #Creates makeshift Temp data to send to server
    return randint(0,20)

post_data = {'windspeed':WindSpeed(), 'temp': Temp()}
#POSTs post_data to server
r = requests.post('http://10.0.0.119', data = post_data)
print (r.text)
下面是服务器脚本:
from flask import Flask, request, render_template, g
import json
import sqlite3 as sql

app = Flask(__name__)
def insert_readings(windspeed):
    DATABASE = '/var/www/FlaskApp/FlaskApp/weather.db'
    with sql.connect(DATABASE) as con:
        cur = con.cursor()
        cur.execute("INSERT INTO weather_readings (windspeed) VALUES (?)", (windspeed))
        con.commit()
@app.route("/", methods=['GET','POST'])
def result():
    if request.method == 'POST':
        windspeed = request.form['windspeed']       
        insert_readings(windspeed)
        return "Done"
    else:
        insert_readings(4,3) #This works
        return render_template('main.html', name='GET')

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

值得注意的是,insert_readings函数在else语句和其他文件中调用时可以工作。此外,当我试图写入文本文件时,也会返回相同的错误。POST请求在返回windspeed时自行工作,因此我认为问题不在于获取数据。

这里你只有字典的风速键,只有一个值。

 if request.method == 'POST':
        windspeed = request.form['windspeed']       
        insert_readings(windspeed)
        return "Done"
else:
        insert_readings(4,3) #This works

,你尝试了两个值。

试一试:

if request.method == 'POST':
            value1 = request.form['windspeed']
            value2 = request.form['temp']
            insert_readings(int(value1),int(value2))
            return "Done"

你能发布更多关于这个错误的信息吗?

客户端脚本没有任何问题,服务器脚本看起来很好。500内部服务器错误是一个非常广泛的错误消息,如果不在您的设置上测试脚本,就很难评估问题。能否提供服务器设置/配置?

最新更新