【发布时间】:2021-11-22 15:46:23
【问题描述】:
为什么cursor.fetchone() 返回{'1': 1} 而不是行值?
我期待像 {'username': 'Bob', 'password': 'hunter2'} 这样的东西。
from flaskext.mysql import MySQL
from pymysql.cursors import DictCursor
# ...
mysql = MySQL(cursorclass=DictCursor)
# ...
cursor = mysql.get_db().cursor()
# ...
cursor.execute('SELECT 1 FROM users WHERE username = %s AND password = %s', [name, password])
row = cursor.fetchone()
print(row) # {'1': 1}
【问题讨论】:
-
它正在返回行值。该行名为
"1",值为1,因为您的select 语句为SELECT 1。你还期待什么? -
我期待像
(Bob, hunter2)这样的东西,因为那是行的值。SELECT 1我打算只从表中获取 1 行而不是多行。 -
你为什么写
cursorclass=DictCursor? (编辑:没关系,但也许你应该澄清你的问题不是关于为什么结果是字典而不是元组) -
SELECT 1不是这个意思。我想你正在寻找SELECT ... LIMIT 1。