将变量赋值给从mysql表中检索的整数值

时间:2015-01-20 13:22:16

标签: python

我使用多处理来编写用于感测来自三个传感器的数据的代码。实际上我从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__'

2 个答案:

答案 0 :(得分:0)

错误在于:

interval3=int(row[8])

[x]是getitem方法。但正如我在这里看到的那样,行是无。 这就是为什么你不能在索引8处访问元素,因为row是None 并且你不能在无。上调用getitem。

这意味着cursor.fetchone()返回None。

答案 1 :(得分:0)

查询从mysql表中检索数据时出现问题。它输出无输出,即使用cursor.fetchone()时它给出NONE。因此,为interval3指定的整数值为NONE。