属性错误:"long"对象没有属性"fetchall"



我正在尝试使用 mysql-flask python 扩展执行一些 sql。由于某种原因,下面的代码总是返回一个 long。

stringify = lambda x : '"' + x + '"'
if request.method == 'POST':
        sql = "select * from users where username = " + stringify(request.form['username'])
        user = g.db.cursor().execute(sql).fetchall()

错误:

 user = g.db.cursor().execute(sql).fetchall()
AttributeError: 'long' object has no attribute 'fetchall'

为什么不返回结果集?

另外,我可以很好地执行插入语句。

修复(答案):

def get_data(g, sql):
    cursor = g.db.cursor()
    cursor.execute(sql)
    data = [dict((cursor.description[idx][0], value) for idx, value in enumerate(row)) for row in cursor.fetchall()]
    return data

您正在尝试对 Cursor.execute 的结果调用一个方法,DB-API 规范说该方法未定义(您正在使用的实现似乎返回一个整数)。 相反,您希望在游标对象上调用fetchall。 像这样:

cursor = g.db.cursor()
cursor.execute(sql)
user = cursor.fetchall()

最新更新