我使用多处理来编写用于感测来自三个传感器的数据的代码。实际上我从mysql表中检索数据并将其分配给变量。它适用于前两个传感器,但对于第三个传感器,它会产生错误。代码的一小部分如下,
def humidity_sensor():
conn = MySQLdb.connect(host = 'localhost', user = 'root',passwd= 'mumbai',db = 'Sensordata')
cursor = conn.cursor()
cursor.execute("SELECT `DVCPORTmc1_ID`, `DVCPORTmc1_DVCm_ID`,
`DVCPORTmc1_Port_No`, `DVCPORTmc1_SENSRm_ID`, `DVCPORTmc1_Start_Dt`,\
`DVCPORTmc1_Start_Time`, `DVCPORTmc1_End_Dt`, `DVCPORTmc1_End_Time`,
`DVCPORTmc1_Read_Interval`,`DVCPORTmc1_Added_by`)
FROM `M_Device_Port` WHERE DVCPORTmc1_data_del='0' and
DVCPORTmc1_Is_Active='0' and DVCPORTmc1_DVCm_ID = '16' and
DVCPORTmc1_Description='humidity sensor'")
row=cursor.fetchone()
interval3=int(row[8])
while True:
try:
date = time.strftime("%d/%m/%Y")
clock = time.strftime("%H:%M")
temp,humidity,light = main.reading()
cursor.execute("INSERT INTO sensor(date, clock, port,value)
VALUES(%s, %s, %s,%s)",(date, clock,2,humidity))
conn.commit()
time.sleep(interval3)
except:
conn.rollback()
p1=Process(target=light_sensor)
p2=Process(target=temp_sensor)
p3=Process(target=humidity_sensor)
p1.start()
p2.start()
p3.start()
给出错误:
Traceback (most recent call last):
interval3=int(row[8])
Typeerror: 'NoneType'object has no attribute '__getitem__'
答案 0 :(得分:0)
错误在于:
interval3=int(row[8])
[x]是getitem方法。但正如我在这里看到的那样,行是无。 这就是为什么你不能在索引8处访问元素,因为row是None 并且你不能在无。上调用getitem。
这意味着cursor.fetchone()返回None。
答案 1 :(得分:0)
查询从mysql表中检索数据时出现问题。它输出无输出,即使用cursor.fetchone()时它给出NONE。因此,为interval3指定的整数值为NONE。