如何在MySQL中使用Python中的随机元组值更改一个列(字段)

owfi6suc  于 2023-05-21  发布在  Mysql
关注(0)|答案(1)|浏览(142)

我试着这样做,但它仍然会提示错误:“连接MySQL时出错无法处理参数:int(2564),必须是list、tuple类型SQL语句中未使用所有参数”

import mysql.connector
from mysql.connector import Error
import random

try:
    fypdb = mysql.connector.connect(host='localhost', port='3306',
                                         database='userdbfyp',
                                         user='root',
                                         password='root')
    if fypdb.is_connected():
        db_Info = fypdb.get_server_info()
        print("Connected to MySQL Server version", db_Info)
        tuple = (2564, 5343, 4035, 4496)
        randomTup = random.choice(tuple)
        cursor = fypdb.cursor()
        cursor.execute("UPDATE employee2 SET unCode = (randomTup) WHERE gender = 'm'")
        fypdb.commit()
0yycz8jy

0yycz8jy1#

  • 据我所知,你错误地传递了randomTup的值。
  • 更新代码
import mysql.connector
from mysql.connector import Error
import random

try:
    fypdb = mysql.connector.connect(
        host='localhost',
        port='3306',
        database='userdbfyp',
        user='root',
        password='root'
    )
    if fypdb.is_connected():
        db_Info = fypdb.get_server_info()
        print("Connected to MySQL Server version", db_Info)
        values = (2564, 5343, 4035, 4496)
        randomTup = random.choice(values)
        cursor = fypdb.cursor()
        cursor.execute("UPDATE employee2 SET unCode = %s WHERE gender = 'm'", (randomTup,))
        fypdb.commit()
except Error as e:
    print("Error while connecting to MySQL", e)
finally:
    if fypdb.is_connected():
        cursor.close()
        fypdb.close()
  • SQL语句中的%s是一个占位符,将被元组中的值(randomTup,)替换。(randomTup,)中的逗号是必要的,以指示它是一个具有单个值的元组。您可以参考文档here
  • 此外,您还可以添加异常处理来捕获在连接或执行SQL语句期间可能发生的任何错误。最后,cursor和fypdb对象在finally块中关闭,以确保正确的清理。这样你就不会有不必要的连接打开,你只会保持很多连接打开,这可能会导致将来的问题。

相关问题