python - “元组”对象没有属性 'encode'

标签 python encode mysql-connector

代码如下(我是Python/Mysql新手):

import mysql.connector

conn = mysql.connector.connect(host='localhost',user='user1',password='puser1',db='mm')
cursor = conn.cursor()
string1 = 'test1'
insert_query = """INSERT INTO items_basic_info (item_name) VALUES (%s)""", (string1)
cursor.execute(insert_query)
conn.commit()

当我运行此代码时,出现此错误:

Traceback (most recent call last)
File "test3.py", line 9, in <module>
cursor.execute(insert_query)
File "C:\Users\Emanuele-PC\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\cursor.py", line 492, in execute
stmt = operation.encode(self._connection.python_charset)
AttributeError: 'tuple' object has no attribute 'encode'

我见过这个问题的不同答案,但情况与我的情况截然不同,我无法真正理解我在哪里犯了错误。谁能帮我吗?

最佳答案

对于avoid SQL-injections Django documentation完全推荐使用这样的占位符:

import mysql.connector

conn = mysql.connector.connect(host='localhost',user='user1',password='puser1',db='mm')
cursor = conn.cursor()
string1 = 'test1'
insert_query = """INSERT INTO items_basic_info (item_name) VALUES (%s)"""
cursor.execute(insert_query, (string1,))
conn.commit()

您必须在执行方法中传递元组/列表参数作为第二个参数。一切都应该没问题。

关于python - “元组”对象没有属性 'encode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46019616/

相关文章:

html - 当输入允许时,如何防止对 html 实体进行双重编码

file - 需要在golang中生成运行时二进制编码文件

c# - iPhone v 卡中的变音符号

c++ - 使用 MySQL C++ 连接器连接被拒绝

c# - 用C#获取MySQL记录数

c# - 如何在不实际安装连接器的情况下通过 C# 使用 mysql 连接器连接到 mysql

python - 如何使用 os.listdir 打开子文件夹并查找路径

python - 四舍五入到 10

python - 相当于 Python 2 中 BytesIO 的 getbuffer

python - mod_wsgi.so 适用于 windows 7 64 位?