我正在尝试使用python连接器从MySQL数据库中获取数据。我想获取与ID匹配的记录。ID的数据类型为整型。代码如下:
custID = int(input("Customer ID: "))
executeStr = "SELECT * FROM testrec WHERE ID=%d"
cursor.execute(executeStr, custID)
custData = cursor.fetchall()
if bool(custData):
pass
else:
print("Wrong Id")但是代码引发了一个错误,它说:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near '%d' at line 1你知道为什么整数占位符%d会产生这样的结果吗?
发布于 2020-11-28 15:45:09
该字符串仅接受%s或%(name)s,不接受%d。
executeStr = "SELECT * FROM testrec WHERE ID=%s"变量应该在元组中,尽管根据您使用的版本不同,这会因实现而有所不同,但您可能需要使用:
cursor.execute(executeStr, (custID,))更多信息请点击此处https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html
current version当前版本支持变量类型:int,long,float,string,unicode,bytes,bytearray,bool,none,datetime.datetime,datetime.date,datetime.time,time.struct_time,datetime.timedelta, 和decimal.Decimal
发布于 2021-10-26 16:39:43
而不是这样:
custID = int(input("Customer ID: "))
executeStr = "SELECT * FROM testrec WHERE ID=%d"你应该这样写:
custID = int(input("Customer ID: "))
executeStr = "SELECT * FROM testrec WHERE ID='"+custID+"';"发布于 2020-11-28 16:12:00
您应该尝试%s而不是%d。这是因为MYSQL的数据类型可能是int,但您应该传递给游标的参数必须是string。
试试这个:
custID = int(input("Customer ID: "))
executeStr = 'SELECT * FROM testrec WHERE ID=%s'%(custID,)
cursor.execute(executeStr, custID)
custData = cursor.fetchall()
if bool(custData):
pass
else:
print("Wrong Id")https://stackoverflow.com/questions/65047449
复制相似问题