首页 > 编程问答 >无法更新 Python MySQL 中的tinyint

无法更新 Python MySQL 中的tinyint

时间:2024-07-21 14:23:12浏览次数:22  
标签:python mysql

我无法使用以下代码更新我的 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 值相关的问题。

标签:python,mysql
From: 78774485

相关文章