result = cursor.execute(sql) 返回为空
时间: 2023-10-20 14:05:24 浏览: 248
`cursor.execute()` 方法执行 SQL 查询后,返回的是查询结果的行数。如果你使用 `SELECT` 查询语句,并希望获取查询结果,你需要使用 `cursor.fetchall()` 方法来获取查询结果。
例如,如果你执行了如下的代码:
```
cursor = cnx.cursor()
sql = "SELECT * FROM mytable"
result = cursor.execute(sql)
print(result)
```
`result` 变量将会是查询结果的行数,并且 `cursor.fetchall()` 方法并没有被调用,因此查询结果并没有被获取。如果你想获取查询结果,你需要修改代码如下:
```
cursor = cnx.cursor()
sql = "SELECT * FROM mytable"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
```
这里,我们调用了 `cursor.execute()` 方法来执行查询语句,然后调用了 `cursor.fetchall()` 方法来获取查询结果,并将查询结果保存到 `result` 变量中。注意,如果查询结果非常大,`cursor.fetchall()` 可能会导致内存问题,你需要考虑分批获取查询结果或者使用其他方法来处理查询结果。
相关问题
在Python中验证以下程序代码,并描述运行结果和程序功能。importpymysql#需要先安装pymysql(pipinstallpymysql)host="127.0.0.1"user="root"password="123456"port=3306mysql=pymysql.connect(host=host,user=user,password=password,port=port)cursor=mysql.cursor()sql='SELECT*FROMuserlimit10;、cursor.execute(sql)result=cursor.fetchone()获取全部结果集result=cursor.fetchall()print(type(result),result[0])cursor.close()mysql.close()
这段程序的功能是连接到本地的 MySQL 数据库,执行一条查询语句,获取查询结果,并输出类型和结果集中的第一条记录。具体来说,程序会首先导入 `pymysql` 库,然后设置连接 MySQL 数据库所需的主机地址、用户名、密码和端口号,并使用这些参数创建一个数据库连接对象 `mysql`,再使用该对象创建一个游标对象 `cursor`,用于执行 SQL 语句并获取结果。
接着,在程序中定义了一条 SQL 语句 `sql`,用于查询名为 `user` 的表中的前 10 条记录。然后,程序通过 `cursor.execute(sql)` 执行该语句,并通过 `cursor.fetchone()` 和 `cursor.fetchall()` 分别获取查询结果集中的第一条记录和全部记录集。最后,程序输出结果集类型和结果集中的第一条记录,并关闭游标和数据库连接。
如果程序中的 SQL 语句查询成功,那么程序会输出结果集的类型和第一条记录。具体输出结果取决于数据库中 `user` 表的内容。如果查询失败,则程序会抛出异常。需要注意的是,如果查询结果集较大,建议使用 `cursor.fetchmany()` 或者 `cursor.scroll()` 逐步获取查询结果,避免一次性获取的结果集过大导致系统资源不足。
写@app.route('/api/tstj/') def get_book_data(): import pymysql conn = pymysql.connect(host='127.0.0.1', user='root', password='zp65321333', port=3306, db='libsystem', charset='utf8mb4', cursorclass=cursors.DictCursor) cursor = conn.cursor() sql = 'SELECT * from book' result = cursor.execute(sql) data = cursor.fetchall() return {'result':data,'code':200}的功能原理
这段代码实现了一个Flask的API接口,访问接口地址"/api/tstj/"时,会连接数据库,执行一条查询语句"SELECT * from book",将查询结果封装成一个字典对象,包含两个键值对:'result'和'code',其中'result'对应的值是查询结果,'code'对应的值是状态码200,表示请求成功。最后,将这个字典对象作为响应结果返回给前端页面。
具体的过程是:
1. 客户端向服务器发送一个GET请求,请求的地址为"/api/tstj/"。
2. 服务器接收到请求后,调用get_book_data()函数处理这个请求。
3. 在函数内部,使用pymysql模块连接到MySQL数据库,并执行一条查询语句"SELECT * from book"。
4. 调用fetchall()方法获取查询结果,并将结果封装成一个字典对象。
5. 将这个字典对象作为响应结果返回给客户端,并在响应头中设置状态码200。
6. 客户端接收到响应结果后,根据状态码判断请求是否成功,并处理返回的数据。
阅读全文