在json文件中存储python字典并在读取时替换值

时间:2014-07-25 19:50:05

标签: python json dictionary

我正在尝试创建一个系统,用于在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查询工作正常,解压缩工作正常,我现在需要的只是数据部分,我可以创建一个通用的传感器功能(在合理范围内)。

由于

1 个答案:

答案 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)