繁体   English   中英

Python尝试:语法错误

[英]Python Try: Syntax Error

我正在尝试设置一个python程序来编译来自我的arduino输入的数据库,而try:命令给我一个错误,我不确定我理解为什么

import serial
import MySQLdb

dbConn = MySQLdb.connect("localhost","root","Mecool100","ISEF_DB") or die ("Could not connect to database")
cursor = dbConn.cursor()

device = '/dev/ttyACM0'

try:
    print "Trying...",device
    arduino = serial.Serial(device, 250000)
except:
    print "Failed to connect on",device

try:
    data = arduino.readline() #read data
    pieces = data.split("\t")

try:
    cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = data”)
    dbConn.commit()
    cursor.close()
except MySQLdb.IntegrityError:
    print "Failed to insert data"
finally:
    cursor.close()
except:
    print "Failed to get data"

此代码返回以下错误:

  File "test.py", line 21
    try:
      ^
SyntaxError: invalid syntax

有人可以帮助我找到我的错误吗?

谢谢 :)

其他人说你tryexcept积木except你需要的是正确的...但他们错过了你已经拥有它们。 真的,问题是这一行

cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = data”)

应该这样:

cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = data")

实际上与"不是同一个字符" ;它是CP1252中的代码点146(有时被错误地称为ANSI)或Unicode中的代码点8221.执行chr("”")以便自己查看。

您还需要缩进第三个try块,因此最后,您的代码应如下所示:

import serial
import MySQLdb

dbConn = MySQLdb.connect("localhost","root","Mecool100","ISEF_DB") or die ("Could not connect to database")
cursor = dbConn.cursor()

device = '/dev/ttyACM0'

try:
    print "Trying...",device
    arduino = serial.Serial(device, 250000)
except:
    print "Failed to connect on",device

try:
    data = arduino.readline() #read data
    pieces = data.split("\t")

    try:
        cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = data")
        dbConn.commit()
        cursor.close()
    except MySQLdb.IntegrityError:
        print "Failed to insert data"
    finally:
        cursor.close()
except:
    print "Failed to get data"

第二次try:需要一个except和/或finallytry: block。 try没有except或者finally没有意义,所以额外的块是语法必需的。

在你的第三个try块,你应该移动except超前的finally

此外,此行中有一个粗略的引号字符:

cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = data”)

确保它是"在你的代码中,而不是

每个try语句都必须有一个except子句

try:
    1/0
except ZeroDivisionError:
    print("oops")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM