python 使用cursor.fetchall()或cursor.fetchone()时结果为空

9ceoxa92  于 2023-05-16  发布在  Python
关注(0)|答案(1)|浏览(351)

MySQL中有一个简单的表
| 身份证|名称|
| --------------|--------------|
| 1|名称_1|
| ......这是什么?|......这是什么?|
我尝试通过name获取id(顺便说一下,它是主键)编号,使用以下代码

import mysql.connector

# ...create connection
def get_id(name):
    cursor = connection.cursor()
    query = """SELECT id FROM table WHERE name = %s"""
    try:
        cursor.executemany(query, [name])
        # connection.commit() - it didn't help, and I use connection.autocommit = True
        result = cursor.fetchall()  # or cursor.fetchone()
        return result
    except Error as err:
        print(f"The error '{err}' occurred")

但这只会返回一个空list []或None(取决于fetch方法)。
我已经尝试过修改代码,插入检查,如:

if result != None:
    return(result)

使用cursor.stored_results()。没用的
另外,如果在MySQL Workbench中使用SELECT id FROM table WHERE name = "name_1",它会输出正确的id。所以,我不明白有什么问题...

dwbf0jvd

dwbf0jvd1#

SELECT语句不能用于exectutemany()
将对executemmany()的调用更改为以tuple作为第二个参数的execute()。

query = "SELECT id FROM table WHERE name = %s"
cursor.execute(query, (name,))

有关executemmany()示例,请参见API docs

相关问题