如果我写,
cursor=db.cursor(pymysql.cursors.DictCursor)
cursor.execute(query)
result=cursor.fetchall()
print(result)
这有效并将结果打印为字典。
但是如果我这样写,
cursor=db.cursor(pymysql.cursors.DictCursor)
result=cursor.execute(query).fetchall()
print(result)
它给我错误:
Traceback (most recent call last):
File "senti4SDanalyze.py", line 22, in <module>
constructMaleResults()
File "senti4SDanalyze.py", line 12, in constructMaleResults
result=cursor.execute(query).fetchall()
AttributeError: 'int' object has no attribute 'fetchall'
那是为什么?
答案 0 :(得分:1)
在result=cursor.fetchall()
中,方法fetchall
在对象cursor
上被调用。
在result=cursor.execute(query).fetchall()
中,fetchall
方法返回的对象(或本机类型)上正在调用方法execute
。
要更好地理解这一点,请使用内置的type
和dir
进行探索:
type(cursor)
dir(cursor)
type(cursor.execute(query))
dir(cursor.execute(query))