首页 > 解决方案 > Python + MySQL:搜索功能返回所有条目

问题描述

我正在使用 Python 和 MySQL 编写一个库存程序。我想实现一个搜索功能,它根据用户输入返回条目(在单独的 GUI 文件中编程)。在下面的代码中,我预计搜索功能会返回带有“UGreen”品牌的条目。相反,它返回表中的所有条目。

我不确定我在这里做错了什么。我在另一个带有 sqlite 数据库的程序中使用了类似的结构,并且搜索工作正常。

任何和所有的帮助/建议将不胜感激:)

import mysql.connector

equipdb = mysql.connector.connect(
    host = "localhost",
    user = "root",
    password = "REDACTED",
    database = "tel_inventory"
)

def view():
    cur = equipdb.cursor()
    cur.execute("SELECT * FROM equipment")
    result = cur.fetchall()
    return result

def search(name="", brand="", model="", consumables="", storage="", room="", photo=""):
    cur = equipdb.cursor()
    cur.execute("SELECT * FROM equipment WHERE name=%s OR brand=%s OR model=%s OR consumables=%s OR storage=%s OR room=%s OR photo=%s", (name, brand, model, consumables, storage, room, photo))
    result = cur.fetchall()
    return result

#print(view())
print(search(brand="UGreen"))

标签: pythonmysqlsearch

解决方案


尝试直接使用关键字参数

def search(**kwargs):
    cur = equipdb.cursor()
    key = str(list(kwargs.keys())[0])
    value = str(kwargs[key])
    cur.execute('SELECT * FROM equipment WHERE {} = "{}"'.format(key,value))
    result = cur.fetchall()
    return result

推荐阅读