我无法使用以下代码更新我的 Tinyint 值(valid_state):
import mysql.connector
mydb = mysql.connector.connect(host="localhost", user="mahdi", passwd="Abcd@1324", database="mycustomers")
mycursor = mydb.cursor()
sql = "UPDATE `my-table` SET valid_name=%s, valid_state=%s WHERE customer_name=%s"
val = (valid_name, 1, cust_name)
mycursor.execute(sql, val)
mydb.commit()
此代码有什么问题?
MySQL:14.14 蟒蛇:3.11.5
在提供的代码片段中,错误可能出在将布尔值
True/False
直接传递给
valid_state
列,该列的类型为
TINYINT
。在 MySQL 中,
TINYINT
用于存储小的整数,通常表示为
0
或
1
。
要解决此问题,应该传递整数值
1
或
0
,而不是 Python 布尔值。以下是更新代码的方法:
import mysql.connector
mydb = mysql.connector.connect(host="localhost", user="mahdi", passwd="Abcd@1324", database="mycustomers")
mycursor = mydb.cursor()
sql = "UPDATE `my-table` SET valid_name=%s, valid_state=%s WHERE customer_name=%s"
# 验证 valid_state 并将其转换为整型
valid_state = 1 if valid_state else 0
val = (valid_name, valid_state, cust_name)
mycursor.execute(sql, val)
mydb.commit()
在此代码中:
-
我们检查
valid_state
是否为真。 -
如果为真,我们传递
1
给valid_state
变量;否则,传递0
。 - 这确保将整数值传递给的 SQL 查询,从而避免任何类型不匹配。
通过进行此更改,的更新查询应该可以按预期工作,而不会出现任何与
TINYINT
值相关的问题。