从我的sql中检索数据并使用python将其发送到Web服务

时间:2017-08-18 03:19:37

标签: python mysql web-services raspberry-pi2

我正在尝试从Raspberry Pi 2中的MySQL检索数据,并使用python将该数据发布到Web服务。我能够使用python脚本从raspberry pi中的MySQL中检索数据。但是,当我尝试将数据值传递给它时,我无法使用单独的python脚本将数据发布到Web服务。谁会告诉我我做错了什么?或者还有另一种方法可以做到这一点吗?

在Raspberry Pi(fetchdata.py)中从MySQL检索数据的Python代码:

import MySQLdb
import sys
import subprocess

db = MySQLdb.connect("localhost", "root", "1234", "tempdata")
cursor = db.cursor()
sql = "SELECT * FROM webdata"

cursor.execute(sql)
results = cursor.fetchall()
for row in results:
    ID = row[0]
    ChannelID = row[1]
    TimeStamp = row[2]
    RMSVoltage = row[3]

print "ID=%s, ChannelID=%s, TimeStamp=%s, RMSVoltage=%s" % (ID, ChannelID, TimeStamp, RMSVoltage)

db.close()

我得到的输出如下:

  

ID = 4,ChannelID = 43,TimeStamp = 56,RMSVoltage = 78

这是我发布到网络服务的python代码(sendjson.py):

import sys
import json
import pprint
import requests
import subprocess
import fetchdata #name of python script that retrieves data from MySQL in RPi

url = 'http://192.168.1.101/TestWebsite/api/SecondlyReadingDatas'
query = {'ID': 'fetchdata.ID, 'ChannelID': fetchdata.ChannelID, 'TimeStamp': fetchdata.TimeStamp', 'RMSVoltage': 'fetchdata.RMSVoltage'}

headers = {'Content-Type': 'application/json'}
r = requests.post(url, headers=headers, data=json.dumps(query))
print(r.text)

这是我得到的输出:

  

ID = 4,ChannelID = 43,TimeStamp = 56,RMSVoltage = 78

     

{"消息":请求是   无效。"," ModelState":{" secondlyReading.ID" ["错误有   发生了。"]",secondlyReading.ChannelID" ["发生错误。"],   " secondlyReading.TimeStamp" ["发生错误。"],   " secondlyReading.RMSVoltage" ["发生错误。"]}}

有谁能告诉我我做错了什么?我没有在我的网络服务上获得任何新数据。

1 个答案:

答案 0 :(得分:0)

  

问题:所以我需要添加缺少的successfulLoginOrRegistration

,删除不添加!
您的'应如下所示,我已移除 4 dict

'
  

How to use dictionaries in Python
  关于Python中的字典   使用{}大括号构造字典,使用[]方括号将其编入索引   用冒号分隔键和值:用逗号分隔每一对。
  必须引用密钥