Ошибка ------ неожиданный EOF при разборе - PullRequest
0 голосов
/ 10 января 2019

Я запускаю этот код на Python 3 (IDLE) на моем Raspberry Pi 3 с последним RSPBIAN программного обеспечения. С помощью этого кода я пытаюсь получить данные о температуре через датчик ds18b20 и отправляю те же данные в базу данных MySQL, которую я создал.

От попытки: до конца if connection.is_connected () я устанавливаю соединение с базой данных mysql.

Из системы if os.system ('modprobe w1-gpio'), возвращающей temp_c, я получаю данные о температуре через датчик ds18b20.

От Пока и до конца моего кода я пытаюсь отправить данные о температуре в определенную таблицу с именем TAB_CLASSROOM.

Помощь будет очень признателен!

ЗДЕСЬ ПОЛНАЯ ОШИБКА!:

Traceback (most recent call last):
  File "/home/pi/Desktop/mysqlfinal1test.py", line 74
    db.close()
              ^
SyntaxError: unexpected EOF while parsing

Вот питон, включающий код mysql:

import os
import glob
import time
import MySQLdb
import datetime
import mysql.connector
from mysql.connector import Error

i = datetime.datetime.now()

try:
    connection = mysql.connector.connect(host='127.0.0.1',
                             database='temp_pi',
                             user='root',
                             password='test')

    if connection.is_connected():
       db_Info = connection.get_server_info()
       print("Connected to MySQL database... MySQL Server version on ",db_Info)
       cursor = connection.cursor()
       cursor.execute("select database();")
       record = cursor.fetchone()
       print ("Your connected to - ", record)

    os.system('modprobe w1-gpio')
    os.system('modprobe w1-therm')

    base_dir = '/sys/bus/w1/devices/'
    device_folder = glob.glob(base_dir + '28*')[0]
    device_file = device_folder + '/w1_slave'

    def read_temp_raw():
        f = open(device_file, 'r')
        lines = f.readlines()
        f.close()
        return lines

    def read_temp():
        lines = read_temp_raw()
        while lines[0].strip()[-3:] != 'YES':
            time.sleep(0.2)
            lines = read_temp_raw()
        equals_pos = lines[1].find('t=')
        if equals_pos != -1:
            temp_string = lines[1][equals_pos+2:]
            temp_c = float(temp_string) / 1000.0
            temp_f = temp_c * 9.0 / 5.0 + 32.0
            return temp_c  

        while True:
              print("recording data into database(period = 5s.)....press ctrl+Z to stop!")

              valT = str(read_temp())

              year = str(i.year)
              month = str(i.month)
              day = str(i.day)
              date = day + "-" + month + "-" + year

              hour = str(i.hour)
              minute = str(i.minute)
              second = str(i.second)
              timestr = hour + ":" + minute + ":" + second

              try:
                 cur.execute("""INSERT INTO TAB_CLASSROOM(temp_c,T_Date,T_Time) VALUES(%s,%s,%s)""",(valT,date,time))
                 db.commit()
              except:
                 db.rollback()

              time.sleep(10)

        cur.close()  
        db.close()

1 Ответ

0 голосов
/ 10 января 2019

Большая часть опубликованной программы - это огромный блок try без предложения except. Таким образом, когда синтаксический анализатор достигает нижней части файла, он не может завершить открытый блок управления.

try находится в строке 11; мы исчерпали ввод после строки 74 без except для этого try.

Я подозреваю, что ваш отступ неверен (помимо всего прочего), поскольку этот try включает в себя два определения функций. Тем не менее, у вас есть два try заявления, и только одно except.

...