| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 310 人关注过本帖
标题:运行结果只显示最后一行第218行,前面的不显示,错在哪里?
只看楼主 加入收藏
shuxie95
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-3-29
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
运行结果只显示最后一行第218行,前面的不显示,错在哪里?
import pymysql
sql = "select id,name,category,price,category1,publish_time from hadoopdata"
def main():
    try:
        db = pymysql.connect(host="localhost",user="root",password="123456",database="pysql")
        cursor = db.cursor()
        cursor.execute(query=sql)
        for user_row in cursor.fetchall():
            id = user_row[0]
            name =user_row[1]
            category = user_row[2]
            price = user_row[3]
            category1 = user_row[4]
            publish_time = user_row[5]
        print("%s %s %s %s %s %s " % (id,name,category,price,category1,publish_time))
    except exception:
        print("error"+traceback.format_exc())
    finally:
        db.close()
if __name__=="__main__":
    main()

#运行结果只显示最后一行第218行的数据,前面的不显示,错在哪里?表在MYSQL里查询此表格是有218条数据的
#218 自粘聚合物改性沥青防水卷材 -218 -218.00 -218 2019-08-01
#进程已结束,退出代码0
搜索更多相关主题的帖子: 显示 运行 不显示 cursor 一行 
2023-04-11 16:08
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:10 

问题出在for循环中,循环体内的print语句应该与for循环同级别,即在for循环内部,而不是在循环外部。因为在循环外部,只会输出最后一次循环的结果。

修改后的代码应该是这样的:

程序代码:
import pymysql

sql = "select id,name,category,price,category1,publish_time from hadoopdata"

def main():
    try:
        db = pymysql.connect(host="localhost",user="root",password="123456",database="pysql")
        cursor = db.cursor()
        cursor.execute(query=sql)
        for user_row in cursor.fetchall():
            id = user_row[0]
            name =user_row[1]
            category = user_row[2]
            price = user_row[3]
            category1 = user_row[4]
            publish_time = user_row[5]
            print("%s %s %s %s %s %s " % (id,name,category,price,category1,publish_time))
    except Exception as e:
        print("error: " + str(e))
    finally:
        db.close()

if __name__=="__main__":
    main()


这样就可以输出所有查询结果了。另外,原代码中except exception应该改为except Exception,因为异常类型应该是Exception而不是exception。

会当凌绝顶,一览众山小.
2023-04-11 18:52
shuxie95
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-3-29
收藏
得分:0 
回复 2楼 东海ECS
谢谢,太感谢了!
2023-04-12 09:46
快速回复:运行结果只显示最后一行第218行,前面的不显示,错在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043201 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved