我是编码和数据库的新手,如果我手写的话,我无法使查询工作,但我有很多事情要做,想在函数中使用它,但无法让它工作,它返回一个参数错误
import mysql.connector
def connection_check_1(query, value):
mydb = mysql.connector.connect(
host="******",
user="*****",
passwd="*****",
database="****"
)
mycursor = mydb.cursor()
mycursor.execute(query, (value))
myresult = mycursor.fetchall()
mydb.close()
return myresult
value = "sheep"
query = 'select inlicence from licence where animal = %s'
myresult = connection_check_1(query, value)
print(myresult)
这是我的 SQL 表
create table licence
(
animal varchar (20) primary key,
inlicence int (1)
);
这是我得到的错误
Traceback (most recent call last):
File "*******************", line 20, in
myresult = connection_check_1(query, value)
File "********************", line 13, in connection_check_1
mycursor.execute(query, (value))
File "********************************************88", line 246, in execute
prepared = self._cnx.prepare_for_mysql(params)
File "/home/kev/PycharmProjects/test bed/venv/lib/python3.5/site-packages/mysql/connector/connection_cext.py", line 535, in prepare_for_mysql
raise ValueError("Could not process parameters")
ValueError: Could not process parameters
我尝试改变查询的编写方式,将其更改为fetchall()
。
最佳答案
用 ()
包装一个值不会将它变成一个元组。您可能打算在那里添加一个逗号:
mycursor.execute(query, (value,))
# Creates a one-element tuple-^
关于python - 为什么这个查询不能从 python 到 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895560/