当前位置: 首页 > news >正文

廊坊做网站优化的公司网站稳定期的推广

廊坊做网站优化的公司,网站稳定期的推广,前端开发面试题,公司网站建设费入哪个科目分页查询 分页查询是处理大量数据时常用的技术#xff0c;通过分页可以将数据分成多个小部分#xff0c;方便用户逐页查看。SQLAlchemy 提供了简单易用的方法来实现分页查询。 本篇我们也会在最终实现这样的分页效果#xff1a; 1. 什么是分页查询 分页查询是将查询结果按照…分页查询 分页查询是处理大量数据时常用的技术通过分页可以将数据分成多个小部分方便用户逐页查看。SQLAlchemy 提供了简单易用的方法来实现分页查询。 本篇我们也会在最终实现这样的分页效果 1. 什么是分页查询 分页查询是将查询结果按照一定数量分成多页展示每页显示固定数量的记录。分页查询通常使用两个参数 limit每页显示的记录数量。 offset跳过的记录数量。 例如要查询第二页每页显示 10 条记录 limit10 offset10 2. 使用 SQLAlchemy 实现分页查询 基本查询 首先我们需要一个基本的查询来获取数据 import db from model import Studentdef basic_query():students db.session.query(Student).all()for stu in students:print(stu.to_dict()) 使用 limit 和 offset 前文中我们已经了解到 SQLAlchemy 提供了 limit 和 offset 方法来实现分页查询。limit 限制返回的记录数量offset 跳过指定数量的记录。 import db from model import Studentdef paginated_query(page, per_page):q db.select(Student).limit(per_page).offset((page - 1) * per_page)students db.session.execute(q).scalars()for stu in students:print(stu.to_dict()) 例如要获取第 2 页每页显示 10 条记录 paginated_query(2, 10) 对应的 SQL 语句 SELECT * FROM tb_student LIMIT 10 OFFSET 10; 3. 前后端实现分页功能 后端分页 在后端实现分页功能时可以创建一个函数来处理分页逻辑。这个函数接受 page 和 per_page 参数并返回当前页的数据和总页数。 import db from model import Studentdef get_paginated_students(page, per_page):total db.session.query(Student).count()q db.select(Student).limit(per_page).offset((page - 1) * per_page)students db.session.execute(q).scalars()return {total: total,page: page,per_page: per_page,pages: (total per_page - 1) // per_page,data: [stu.to_dict() for stu in students]} 前端分页 在前端实现分页时可以使用后端提供的分页数据来渲染页面 {total: 100,page: 2,per_page: 10,pages: 10,data: [{id: 11, name: Student 11, ...},{id: 12, name: Student 12, ...},...] } 前端可以根据这些数据渲染分页控件和当前页的数据。 [拓展] Flask 分页演示 下面是一个前后端不分离的 Flask 项目代码文件比较多你需要自行理一下。同时也要保证 Flask 、 Flask-SQLAlchemy 与 Flask-MysqlDB 的安装。 pip install flask pip install flask-sqlalchemy # 兼容 Flask 的 SQLAlchemy 框架提供 ORM 功能 pip install flask-mysqldb # 为 Flask-SQLAlchemy 提供 MySQL 驱动 Flask 项目目录如下 flask_app/ # 项目目录 ├── templates/ # 模板目录 │ └── list.html # 模板文件 ├── config.py # Flask 配置文件 ├── db.py # 数据库核心文件包含重要操作 ├── manage.py # Flask 路由和业务视图文件 └── models.py # 数据库模型文件 首先看一下配置文件 config.py class Config:SQLALCHEMY_DATABASE_URI mysql://root:0908localhost:3306/db_flask_demo_school?charsetutf8mb4 # 数据库连接。自行替换数据库用户名称和密码以及实际数据库名SQLALCHEMY_ECHO False # 是否打印执行的 SQL 语句及其耗时DEBUG True # 是否启用调试模式 db.py Create database: create database db_flask_demo_school charsetutf8mb4from flask_sqlalchemy import SQLAlchemy from sqlalchemy import *db SQLAlchemy() models.py from db import *class Student(db.Model):__tablename__ tb_student2id db.Column(db.Integer, primary_keyTrue, comment主键)name db.Column(db.String(15), indexTrue, comment姓名)age db.Column(db.SmallInteger, comment年龄)sex db.Column(db.Boolean, comment性别)email db.Column(db.String(128), uniqueTrue, comment邮箱地址)money db.Column(db.Numeric(10, 2), default0.0, comment钱包)def to_dict(self):return {id: self.id,name: self.name,age: self.age,sex: self.sex,email: self.email,money: float(self.money)}def __repr__(self):return f{self.__class__.__name__}: {self.name} 然后就是 manage.py编写了路由与业务代码 from pathlib import Path from flask import Flask, jsonify, request, render_template from config import Config from models import db, Studentapp Flask(__name__, template_folder./templates) app.config.from_object(Config)db.init_app(app)app.route(/, methods[GET]) def index():没啥用勿看title Path(__file__).namereturn titleapp.route(/students, methods[POST]) def create_student():采集访问的信息创建学生sex request.form.get(sex)sex int(sex) if sex.isdigit() else 0student Student(namerequest.form.get(name, 未知),agerequest.form.get(age, 0),sexbool(sex),emailrequest.form.get(email, ),moneyrequest.form.get(money, 0),)if request.form.get(id, None) is not None:student.id request.form[id]db.session.add(student)db.session.commit()return jsonify({success: True,data: student.to_dict(),msg: success}), 201app.route(/students, methods[DELETE]) def delete_students():删除学生表的所有记录db.session.execute(db.delete(Student))db.session.commit()return jsonify({success: True,data: None,msg: success})app.route(/students, methods[GET]) def get_students():# 旧版本 2.x 获取全部数据# students Student.query.all()# 新版本 3.1.x 获取全部数据students db.session.execute(db.select(Student).where()).scalars()return jsonify({success: True,data: {count: Student.query.count(),students: [student.to_dict() for student in students]},msg: success})app.route(/students/int:student_id, methods[GET]) def get_student(student_id):# 根据主键查询数据不存在则为 Nonestudent db.session.get(Student, student_id)if not student:return jsonify({success: False,data: None,msg: student not found})return jsonify({success: True,data: student.to_dict(),msg: success})app.route(/students/data, methods[GET]) def students_data():这里是分页器的使用不同于我们所使用的 limit 和 offset 需要自己编写# 不采取数据分页时大量数据时会导致服务器运存膨胀这是非常不妥的page request.args.get(page, 1, typeint)per_page request.args.get(size, 3, typeint)# 创建分页器对象pagination Student.query.paginate(pagepage, per_pageper_page, max_per_page20)print(当前页对象, pagination)print(总数据量, pagination.total)print(当前页数据列表, pagination.items)print(总页码, pagination.pages)print()print(是否有上一页, pagination.has_prev)print(上一页页码, pagination.prev_num)print(上一页对象, pagination.prev())print(上一页对象的数据列表, pagination.prev().items)print()print(是否有下一页, pagination.has_next)print(下一页页码, pagination.next_num)print(下一页对象, pagination.next())print(下一页对象的数据列表, pagination.next().items)# 前后端分离推荐使用的 json 结果这里没用到data {page: pagination.page, # 当前页码pages: pagination.pages, # 总页码has_prev: pagination.has_prev, # 是否有上一页prev_num: pagination.prev_num, # 上一页页码has_next: pagination.has_next, # 是否有下一页next_num: pagination.next_num, # 下一页页码items: [{id: item.id,name: item.name,age: item.age,sex: item.sex,money: item.money,} for item in pagination.items]}return render_template(list.html, **locals())if __name__ __main__:with app.app_context():db.drop_all() # 启动时先删除相关表后创建相关表db.create_all()app.run(0.0.0.0, 9527) 最后就是 list.html 这个模板文件呈现一个分页的演示 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlestylebody {font-family: Arial, sans-serif;background-color: #f4f7fa;color: #333;}table {border-collapse: collapse;margin: 50px auto;width: 80%;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);background-color: #fff;}th, td {padding: 12px 15px;text-align: center;}th {background-color: #007bff;color: #fff;text-transform: uppercase;}tr:nth-child(even) {background-color: #f2f2f2;}tr:hover {background-color: #e9f5ff;}.page {margin: 20px auto;text-align: center;}.page a, .page span {padding: 8px 16px;margin: 0 4px;color: #007bff;background: #fff;border: 1px solid #007bff;border-radius: 4px;text-decoration: none;transition: background-color 0.3s, color 0.3s;}.page a:hover {background-color: #007bff;color: #fff;}.page span {background-color: #007bff;color: #fff;}/style /head bodytable border1 aligncenter width600trthID/ththAge/ththName/ththSex/ththMoney/th/tr{% for student in pagination.items %}trtd{{ student.id }}/tdtd{{ student.age }}/tdtd{{ student.name }}/tdtd{{ 男 if student.sex else 女 }}/tdtd{{ student.money }}/td/tr{% endfor %}tr aligncentertd colspan5 classpage{% if pagination.has_prev %}a href?page1首 页/aa href?page{{ pagination.page - 1 }}上一页/aa href?page{{ pagination.page - 1 }}{{ pagination.page - 1 }}/a{% endif %}span{{ pagination.page }}/span{% if pagination.has_next %}a href?page{{ pagination.page 1 }}{{ pagination.page 1 }}/aa href?page{{ pagination.page 1 }}下一页/aa href?page{{ pagination.pages }}尾 页/a{% endif %}/td/tr/table /body /html 为了确保能够有一定数量的数据请你另外新建一个 request.py用于创建大量数据如果你知道 faker 的使用也可以自己弄一些数据先启动 manage.py保证后端服务的开启和路由可用然后直接运行该文件后可添加测试数据 # request.py import requests # pip install requestsstudents [ # 虚拟数据务必当真{name: 王毅,age: 21,sex: 1,email: wangyigmail.com,money: 4488.5},{name: 张晓,age: 19,sex: 0,email: zhangxiaoexample.com,money: 2389.75},{name: 李春阳,age: 23,sex: 1,email: lichunyangoutlook.com,money: 6715.32},{name: 刘瑞,age: 20,sex: 0,email: liuruiyahoo.com,money: 3456.89},{name: 陈欢,age: 22,sex: 1,email: chenhuangmail.com,money: 5678.12},{name: 吴娜,age: 18,sex: 0,email: wunaexample.org,money: 1234.56},{name: 赵丹,age: 24,sex: 0,email: zhaodaoutlook.com,money: 7890.43},{name: 孙宇,age: 21,sex: 1,email: sunyuyahoo.co.jp,money: 4567.89},{name: 黄宇,age: 19,sex: 1,email: huangyugmail.com,money: 2345.67},{name: 杨静,age: 22,sex: 0,email: yangjingexample.com,money: 6789.01} ] for student in students:response requests.request(POST, http://127.0.0.1:9527/students, datastudent)print(添加一条记录, response.json()) 确定 Flask 项目正常启动并且上面的数据也完成了注入如果你发现启动失败了请检查路由、数据库连接是否有问题你可能需要一定的 Flask 基础知识。接下来如何访问我们渲染的模板呢 根据路由视图和设置的访问端口9527 app.route(/students/data, methods[GET]) def students_data():...return render_template(list.html, **locals()) 我们直接在浏览器访问http://127.0.0.1:9527/students/data 这个地址即可。 上述案例是演示所用随意写的小部分代码参考了某机构的教程代码示例平台原因无法标注路由设计也是很随便的这种代码如果存在版权纠纷emmm.....请联系我删除谢谢。无私开源只为搞懂后端开发的学习请勿钻牛角…… 文章转载自顾平安 原文链接https://www.cnblogs.com/gupingan/p/18300467 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
http://www.tj-hxxt.cn/news/220730.html

相关文章:

  • 网站开发给网站设置图标在什么文件中写代码wordpress mysql 分表
  • 网站设计 网站开发 西安wordpress wp_update_post
  • 胶州网站建设培训网页浏览器入口
  • 网站的ftp地址是什么石狮建设银行网站
  • 沈阳网站建设找思路课程网站建设规划
  • 手机创建网站的软件站长统计app软件
  • 做ps的素材哪个网站无锡网站营销公司简介
  • 可以发广告的100个网站物流公司图片
  • 网站开发部门结构如何判断网站程序使用asp还是php
  • 怎么做金融营销网站汕头市城市建设开发总公司
  • 企业内部网站建设网站seo门户网价格是多少钱
  • 江西新农村建设权威网站郴州网站建设方案策划
  • 网站的建设公司网站后台管理入口
  • 做网站前端深圳物流公司联系电话
  • 杭州手机网站制作公司珠江新城越秀金融大厦
  • 佛山论坛建站模板增塑剂网站建设
  • 宁波seo推广优化公司天津seo建站
  • 做网站要付哪些钱建设项目网站备案申请表
  • wordpress网站维护教程东莞短视频seo制作
  • 建设好网站能赚到钱吗漯河企业网站建设
  • 丽水专业网站建设公司襄阳公司网站建设
  • 国外注册机网站wordpress 小工具添加图片
  • 宝安网站建设 名匠市场调研报告800字
  • 帮人做推广的网站如何搭建个人博客
  • 城乡建设招投标网站闸北区网站建设网页设计
  • 网站的系统建设方式有哪些方面教育机构做网站素材
  • 公众平台微信公众号官网wordpress仿seowhy基础指南模板
  • 佛山网站制作在线百度首页推广
  • 网站开发要学多久深圳十大建筑设计公司
  • 网站备案做优惠券怎么在网站上做排名