為何管理新聞頁面無法顯現所有新聞資料?
相关截图:
相关截图:
相关代码:news_dao
# 查詢新聞列表 def search_list(self, page): try: con = pool.get_connection() cursor = con.cursor() sql = 'SELECT n.id, n.title, t.type, u.username ' \ 'FROM t_news n JOIN t_type t ON n.type_id=t.id ' \ 'JOIN t_user u ON n.editor_id=u.id ' \ 'ORDER BY n.id DESC ' \ 'LIMIT %s, %s' # n.create_time cursor.execute(sql, ((page-1)*10, 10)) result = cursor.fetchall() return result except Exception as e: print(e) finally: if 'con' in dir(): con.close()
相关代码:app
elif choice == '2': page = 1 # 必需要將變量設在循環外部, 否則每一次循環, 上一次搜索到的頁數將消失 while True: os.system('cls') count_page = __news_service.search_count_page() # 查詢總頁數 result = __news_service.search_list(page) # 所有紀錄的結果 # page 為當前頁數, 默認為第一頁 # 為何要使用索引的序號, 而不是主鍵值? 使新聞被刪除後, 不會主鍵顯示不連續 for index in range(len(result)): one = result[index] # 需要逐一提取數據 -主鍵, title, content_id, type_id print(Fore.LIGHTBLUE_EX, '\n\t%d\t%s\t%s\t%s' % (index + 1, one[1], one[2], one[3])) print(Fore.LIGHTBLUE_EX, '-----------------------------') print('\n\t%d/%d' % (page, count_page)) print(Fore.LIGHTBLUE_EX, '-----------------------------') print(Fore.LIGHTRED_EX, "\n\tback.返回上一層") print(Fore.LIGHTRED_EX, "\n\tprev.上一頁") print(Fore.LIGHTRED_EX, "\n\tnext.下一頁") print(Style.RESET_ALL) opt = input('\n\t請輸入操作編號:') if opt == 'back': break elif opt == 'prev' and page > 1: page -= 1 # 需不需要重新調用查詢功能? 不用! 因為page會保存在循環內, 到時會重新執行 elif opt == 'next' and page < count_page: # 當前頁數 < 總頁數 page += 1 elif int(opt) >= 1 and int(opt) <= 10: # 此處的opt要輸入控制台顯示的新聞序號, 一頁10條紀錄 # 但螢幕上看到的opt非原本的主鍵值, result[0]為原本結果的第一條紀錄 news_id = result[int(opt) - 1][0] result = __news_service.search_by_id(news_id) title = result[0] type = result[1] is_top = result[2] print('\n\t新聞原標題:%s' % (title)) new_title = input('\n\t新標題:') print('\n\t原類型:%s' % (type)) # 打印類型列表 type = __type_service.search_all_type() for index in range(len(type)): one = type[index] print(Fore.LIGHTBLUE_EX, '\n\t{}.{}'.format(index + 1, one[1])) print(Style.RESET_ALL) opt = input('\n\t類型編號;') type_id = type[int(opt) - 1][0] # TODO: 輸入新聞內容 content_id = 100 print('\n\t原置頂級別:%s' % (is_top)) new_is_top = input('\n\t新置頂級別(0-5):') is_commit = input('\n\t是否提交?(Y/N):') if is_commit == 'Y' or is_commit == 'y': __news_service.update(news_id, new_title, type_id, content_id, new_is_top) print('修改成功(3秒自動返回)') time.sleep(3)
相关代码:news_service
# 查詢新聞列表 def search_list(self, page): result = self.__news_dao.search_list(page) return result
15
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小猿
2022-07-22 14:25:53
同学,你好!不能显示所有新闻数据是因为在查询时返回所有数据是以分页的形式显示的
同学若不想分页显示数据,同学可以添加新的方法获取所有不分页的数据,如图
app.py调用的方法
news_service.py文件添加的方法
news_dao.py文件添加的方法
def search_list_all(self): try: con = pool.get_connection() cursor = con.cursor() sql = 'SELECT n.id, n.title, t.type, u.username ' \ 'FROM t_news n JOIN t_type t ON n.type_id=t.id ' \ 'JOIN t_user u ON n.editor_id=u.id ' \ 'ORDER BY n.id DESC ' \ # n.create_time cursor.execute(sql) result = cursor.fetchall() return result except Exception as e: print(e) finally: if 'con' in dir(): con.close()
如此操作可以显示所有数据。祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星