我正在尝试从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,通道 ID =43,时间戳=56,RMSVoltage=78
这是我发布到Web服务(sendjson.py(的python代码:
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,通道 ID =43,时间戳=56,RMSVoltage=78
{"消息":请求是 无效。","模型状态":{"secondlyReading.ID"["错误有 发生。"]", 其次阅读.通道 ID"["发生错误。"], "secondlyReading.TimeStamp"["发生错误。 "secondlyReading.RMSVoltage"["发生错误。"]}}
谁能告诉我我做错了什么?我的 Web 服务上没有收到任何新数据。
问题:所以我需要添加缺少的
'
?
不,删除不添加!
你的dict
应该是这样的,我删除了4'
!
query = {'ID': fetchdata.ID, 'ChannelID': fetchdata.ChannelID, 'TimeStamp': fetchdata.TimeStamp, 'RMSVoltage': fetchdata.RMSVoltage}
如何在 Python 中使用字典
关于 Python 中的字典 使用 {} 大括号构造字典,使用 [] 方括号为其编制索引。在
每对之间用冒号分隔键和值:和逗号。
密钥必须引用