AttributeError: 'tuple' 对象在使用 mysql-connector 插入数据时没有属性 'encode'

Posted

技术标签:

【中文标题】AttributeError: \'tuple\' 对象在使用 mysql-connector 插入数据时没有属性 \'encode\'【英文标题】:AttributeError: 'tuple' object has no attribute 'encode' when inserting data using mysql-connectorAttributeError: 'tuple' 对象在使用 mysql-connector 插入数据时没有属性 'encode' 【发布时间】:2015-03-22 16:07:43 【问题描述】:

以下程序收集用户输入并存储它们,然后将这些数据保存到 .csv/通过电子邮件发送给我,最后将该数据插入 mysql 数据库。

我为此使用了 mysql.connector,但是我收到了错误:

AttributeError: 'tuple' object has no attribute 'encode'

程序执行时。

这是代码,我认为问题与尝试插入数据库的数据类型有关,但我无法确定。

import mysql.connector

# ...

# Connect to MySQL Database and send user_input data to 'user' TABLE.
cnx = mysql.connector.connect(user='root', password='ash123', host='localhost', database='user_data_db')
cursor = cnx.cursor()

query = ("INSERT INTO user (user_id, first_name, last_name, age, postcode,  email_address)"
         "VALUES (%s, %s, %s, %s, %s, %s)", (user_id, firstname, lastname, age, postcode, email)) 

cursor.execute(query)
print("Executed Successfully")

cursor.close()
cnx.close()

【问题讨论】:

【参考方案1】:

除非它是bytesbytearray 类型,否则cursor.execute 期望第一个参数(SQL 查询)具有encode 方法。 query 是一个 2 元组,元组没有该方法并且尝试访问它失败并返回 AttributeError

您可以解压query,以便将其元素用作cursor.execute 的位置参数:

cursor.execute(*query)
# = cursor.execute("INSERT INTO user (user_id, first_name, last_name, age, postcode, email_address)"
#                  "VALUES (%s, %s, %s, %s, %s, %s)", (user_id, firstname, lastname, age, postcode, email))

【讨论】:

非常感谢,我已经进行了更改,并且效果很好。如此微小的变化使一切变得不同。我会在未来研究这个! :)

以上是关于AttributeError: 'tuple' 对象在使用 mysql-connector 插入数据时没有属性 'encode'的主要内容,如果未能解决你的问题,请参考以下文章

在 PySpark 中展开 json 列 - 架构问题 - AttributeError: 'tuple' object has no attribute 'name'

AttributeError: 'tuple' 对象在使用 mysql-connector 插入数据时没有属性 'encode'

Django AttributeError 'tuple' 对象没有属性 'regex'

AttributeError:'tuple'对象没有属性'price'

如何修复“AttributeError at /orders/create/‘tuple’对象在 Django 中没有属性‘get’

创建 ZipFile 时出现 AttributeError