Python 2.7.3如果将变量与字符串进行比较
这段代码给了我以下错误Python 2.7.3如果将变量与字符串进行比较,python,mysql-python,pyserial,Python,Mysql Python,Pyserial,这段代码给了我以下错误 import serial import MySQLdb dbConn = MySQLdb.connect("localhost","root","test","ISEF_DB") or die ("Could not connect to database") cursor = dbConn.cursor() device = '/dev/ttyACM0' try: print "Trying...",device arduino = serial
import serial
import MySQLdb
dbConn = MySQLdb.connect("localhost","root","test","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")
print "The data is:",data
if data == 461518B1:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '461518B1'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 46154D41:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '46154D41'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 4615A161:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '4615A161'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 4616A511:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '4616A511'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 46193031:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '46193031'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 46196771:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '46196771'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 461A79D1:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '461A79D1'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 46211881:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '46211881'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 465598F1:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '465598F1'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
elif data == 9A2DCDE4:
try:
cursor.execute("UPDATE `ISEF_DB`.`attendance` SET `present`='1' WHERE `id` = '9A2DCDE4'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
else:
print "Card not recognized"
except:
print "Failed to get data"
我试图做的是将变量与字符串进行比较,但它不起作用。我看不出我做错了什么。数据值只能是包含数字和字母的10个if
语句之一。我没有看到任何语法问题。有人能帮我纠正这个错误吗
谢谢虽然这并不能直接回答您的问题(在评论中已充分说明,即
461518B1
不是字符串,不是“461518B1”
或不是“461518B1”
(使用引号指定字符串文字)
我想指出的是,您可以修改代码以避免冗余,因为您似乎在每个if/elif`块中使用相同的代码块:
File "test.py", line 19
if 461518B1 == data:
^
SyntaxError: invalid syntax
461518B1
不是字符串,461518B1
或'461518B1'
是。此外,您提供的跟踪不可能来自您提供的代码,因为如果461518B1==数据:
在您的代码中不存在。您正在将某个内容与不存在的内容进行比较。谢谢,我理解。id\u值
来自刷卡到arduino rfid evalua的rfid卡操作屏蔽。打印行数据为:
显示rfid卡的正确值,但是,程序以卡未识别结束。因此,我知道正在读取卡,读取的值是可能的id\u值之一
所需。变量数据
与id\u值之一不相关如果id值中的data.strip()
@turnerison可以测试解决方案吗?我的问题是,读取器将其作为值读取,然后在末尾添加一个\r\n。函数strip()
应该可以解决这个问题,不是吗?
id_values = ['461518B1', '46154D41', '4615A161', '4616A511', '46193031', '46196771', '461A79D1', '46211881', '465598F1', '9A2DCDE4']
data = arduino.readline() # read data
data = data.strip() # get rid of whitespace like '\r\n'
print "The data is:",data
if data in id_values:
try:
cursor.execute("UPDATE 'ISEF_DB'.'attendance' SET 'present'='1' WHERE 'id' = '" + data + "'")
dbConn.commit()
cursor.close()
print "data inserted"
except MySQLdb.IntegrityError:
print "Failed to insert data"
finally:
cursor.close()
print "done"
else:
print "Card not recognized {}".format(data)