我正在尝试创建一个系统,用于在json文件中存储有关传感器的信息。到现在为止还挺好。我可以将几乎所有数据存储在json中并将其拉出来而不会出现问题。
我遇到的问题是数据库调用。这是鱼缸传感器的json文件的基本示例,但还有其他包含不同传感器包的文件
{
"sensor_info": {
"name" : "fish tank",
"unpack_commands" : "floatle:32, floatle:32"
},
"database_query" : "INSERT INTO fish_tank (pH, temperature, timestamp) VALUES ('%(pH)s', '%(temperature)s', TIMESTAMP(NOW(5)))",
"database_data" : "{'pH': pH, 'temperature': temperature}"
}
这是从json调用数据的函数。顺便说一句,我正在使用bitstring库,因此解包。
def fish_tank(sensor_info, data):
unpack_commands = sensor_info['sensor_info']['unpack_commands']
sql_statement = sensor_info['database_query']
# Unpack the data from the incoming serial data
pH, temperature = data.unpack(unpack_commands)
# Create the dictionary for database submission
# data = sensor_info['database_data']
data = {'pH': pH, 'temperature': temperature}
Database().write_data(sql_statement, data)
正如您所看到的,我将数据字典存储在json文件中,但我没有使用它,因为我无法弄清楚如何从json中提取字典并将正确的值插入到字典中进行写入到数据库。 sql查询工作正常,解压缩工作正常,我现在需要的只是数据部分,我可以创建一个通用的传感器功能(在合理范围内)。
由于
答案 0 :(得分:0)
如果data.unpack()
返回序列,则根本不使用命名参数,只需使用序列:
{
"sensor_info": {
"name" : "fish tank",
"unpack_commands" : "floatle:32, floatle:32"
},
"database_query" : "INSERT INTO fish_tank (pH, temperature, timestamp) VALUES (%s, %s, TIMESTAMP(NOW(5)))",
}
现在有两个位置 SQL参数,匹配从data.unpack()
调用返回的两个值的序列:
unpack_commands = sensor_info['sensor_info']['unpack_commands']
sql_statement = sensor_info['database_query']
# Unpack the data from the incoming serial data
params = data.unpack(unpack_commands)
Database().write_data(sql_statement, params)