AttributeError:'元组'对象没有属性'编码'使用mysql-connector插入数据时

时间:2015-01-23 15:16:53

标签: python mysql python-3.x mysql-connector

以下程序收集用户输入并存储它们,然后将该数据保存到.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 个答案:

答案 0 :(得分:3)

除非它是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))