带有 Where 子句的基本 Mysql select 不起作用。 CLI 中的相同查询有效

Basic Mysql select with Where clause not working. Same query in CLI works

我想用 mysql 连接器做一个 select。我有这个:

    subcategory = "Test"
    c = mydb.cursor()
    sql = "SELECT id FROM Department WHERE subcategory='%s'"
    c.execute(sql, subcategory)
    res = c.fetchone()
    print(res)

输出:

None

但它总是 returns None。 如果我 运行 来自 mysql cli 的相同 select,它工作正常:

SELECT id FROM Department WHERE subcategory='Test'

输出:

1

为什么它不起作用?
谢谢!

根据 https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html execute 期望 params (即第二个参数)是一个元组,而不是一个字符串。尝试使用:

c.execute(sql, (subcategory,))