有效负载是一个逗号分隔的数据块,表示来自逆变器的读数。这些读数需要存储在一个名为InvertorHistory的表中。每个字段并不总是有一个值。模型已设置为允许字段为null/blank。所以我试图在分配给字段之前检查是否存在值。以下是我目前所掌握的情况:
i = Inverter.objects.get(mac=u)
payload.reverse()
try:
ac_volts_a = str(payload.pop())
ac_volts_b = str(payload.pop())
ac_volts_c = str(payload.pop())
ac_current_a = str(payload.pop())
ac_current_b = str(payload.pop())
ac_current_c = str(payload.pop())
dc_volts = str(payload.pop())
dc_current = str(payload.pop())
kw_out = str(payload.pop())
mwh_total = str(payload.pop())
current_time = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
i_data = InverterHistory(
inverter = i,
if ac_volts_a:
voltage_ac_a = float(ac_volts_a),
if ac_volts_b:
voltage_ac_b = float(ac_volts_b),
if ac_volts_c:
voltage_ac_c = float(ac_volts_c),
if ac_current_a:
current_ac_a = float(ac_current_a),
if ac_current_b:
current_ac_b = float(ac_current_b),
if ac_current_c:
current_ac_c = float(ac_current_c),
if dc_volts:
voltage_dc = float(dc_volts),
if dc_current:
current_dc = float(dc_current),
if kw_out:
kwout = float(kw_out),
if mwh_total:
mwh = float(mwh_total),
recordTime = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"))
i_data.save()
except Exception, e:
print >> sys.stderr, "Error While Recording Inverter History"
print >> sys.stderr, e
raise Http404
我对python相当陌生,不知道如何正确地编写上面的代码。当我试图编译代码时,我在if语句开始的地方得到了一个错误。我如何修复上面的代码,使其编译和工作如预期?在
您应该在调用方法之前构造参数字典,然后使用python关键字unpack运算符将字典作为参数传递。在
简化示例:
相关SE问题: What does *args and **kwargs mean?
我不太明白您要做什么,但错误是因为第一个
if
语句前两行的括号不匹配。调用函数时,参数列表中不能有if
语句。在{{{cd2>在创建一个if语句是不正确的语法。在
您需要做的是将您的逻辑从括号中移出,并将所有变量放入Python
dict
中。然后可以将dict
作为参数传递给对InverterHistory
的调用。在**params
打开字典。这意味着解释器将从字典中获取所有key: value
,并将它们转换为key=value
。这样,if
语句是True
的每个参数都将作为命名参数传递给InverterHistory
相关问题 更多 >
编程相关推荐