PythonValueError中的MySql

PythonValueError中的MySql,python,mysql,Python,Mysql,ValueError:索引47处的格式字符“”不受支持(0x22) args=('unsupported format character\'“\'(0x22)位于索引47',) 带_回溯= 当我尝试执行此代码时: cursor.execute('SELECT * FROM library WHERE book_name LIKE "%'+bookname+'%" AND author LIKE "%'+author1+'%" AND written BETWEEN %s AND %s',(ye

ValueError:索引47处的格式字符“”不受支持(0x22) args=('unsupported format character\'“\'(0x22)位于索引47',) 带_回溯=

当我尝试执行此代码时:

cursor.execute('SELECT * FROM library WHERE book_name LIKE "%'+bookname+'%" AND author LIKE "%'+author1+'%" AND written BETWEEN %s AND %s',(year1, year2))
当我只输入书名和/或作者时,就可以了。 当我只输入第1年和第2年时,也可以

但如果输入了(作者、书名)和(第1年、第2年)中的一个 它不起作用

该代码运行良好

cursor.execute('SELECT * FROM library WHERE book_name LIKE "%'+bookname+'%" AND author LIKE "%'+author1+'%"')

假设您需要curser.execute()的字符串,如下所示

SELECT * FROM library WHERE book_name LIKE "%chuck%" AND author LIKE "%charmichel%" AND written BETWEEN 2015 AND 2017
然后你可以用

cursor.execute('SELECT * FROM library WHERE book_name LIKE "%'+bookname+'%" AND author LIKE "%'+author1+'%" AND written BETWEEN '+year1+ ' AND '+ year2)
或者如果你需要像

SELECT * FROM library WHERE book_name LIKE chuck AND author LIKE charmichel AND written BETWEEN 2015 AND 2017
然后你可以用

cursor.execute('SELECT * FROM library WHERE book_name LIKE '+bookname+' AND author LIKE '+author1+' AND written BETWEEN '+year1+ ' AND '+ year2)
execute('SELECT*FROM library,其中图书名为“%”+bookname+'%”,作者名为“%”+author1+'%”,并编写了“+year1+”和“+year2”)-尝试了此操作。它没有像以前那样给出错误,但也没有给出任何结果(((