def search(title="",author="",year="",isbn=""):
con = mysql.connector.connect(host="localhost", user="root", passwd="junai2104", database="book")
cur = con.cursor()
sql_statement = "SELECT * FROM book WHERE title={} or author={} or year={} or isbn={} ".format(title,author,year,isbn)
cur.execute(sql_statement)
rows=cur.fetchall()
con.close()
return rows
print(search(title='test2'))
如何使用Python参数在MySQL中搜索值? 如何从参数中获取值?
答案 0 :(得分:0)
您的代码有几个问题:
SELECT
语句中,您正在文本列(TEXT
,VARCHAR
等)中寻找值。为此,您必须在搜索条件中添加单引号,因为您希望指示文本文字。因此,WHERE title={}
应该是WHERE title='{}'
(其他参数也一样)。search(title='test2')
会触发搜索条目,其中title
列的值为'test2'
或其他三列(author
,{{1} }和year
)的文本为空。如果您要查找标题isbn
,则只有在其他所有列都不会包含空文本的情况下,此方法才有效。即使这样,由于查询中存在三个'test2'
运算符,因此性能也会很差。您应该做的是分别评估每个参数,并仅使用不为空的参数构造查询。