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

标签 python sqlite http flask server

我正在使用 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 时自行运行,因此我认为问题不在于获取数据。

提前致谢。

最佳答案

这里只有字典的 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"

您能否发布有关该错误的更多信息?

关于Python Flask - 将 POST 数据添加到 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40236878/

相关文章:

android - 删除某个字段具有相同值的多行

XML 回车符在发布后消失了

json - Flutter-错误:不允许使用HTTP 405方法

python - 如何传递第一列值列值在pandas数据框中具有过滤器

python - Apriori 算法即使对于少量数据也能显示大量结果

通过全局公共(public) IP 地址连接的 Python 套接字

java - Netbeans 与 SQLite 的连接中出现 SQLite 错误或缺少数据库(没有此类表)

mysql - 用mysql提取

node.js - NodeJS 负载测试性能不佳 (EADDRNOTAVAIL)

python - 重构重复的 if 语句