为什么这个查询不能从python到sql工作?

camsedfj  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(477)

我是新的编码和数据库,我不能让查询工作,如果我写它长手,但我有很多要执行的,希望它在一个函数,但不能让它工作,它返回一个参数错误

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)
);

这就是我得到的错误
回溯(最近一次呼叫):
文件“************”,第20行,in
myresult=connection\u check\u 1(查询,值)
文件“
************”,第13行,连接\u check \u 1
mycursor.execute(查询,(值))
文件“*********************************************88”,第246行,在execute中
prepared=self.\u cnx.prepare\u for\u mysql(参数)
file“/home/kev/pycharmprojects/test bed/venv/lib/python3.5/site packages/mysql/connector/connection_cext.py”,第535行,在prepare_for_mysql中
raise valueerror(“无法处理参数”)
valueerror:无法处理参数
我尝试过改变查询的编写方式,将其改为 fetchall() .

kmbjn2e3

kmbjn2e31#

将值 Package 为 () 不会把它变成元组。你可能想在这里加个逗号:

mycursor.execute(query, (value,))

# Creates a one-element tuple-^

相关问题