使用烧瓶的简单电子商务API

2023-09-22 13:35:31

一、说明

        让我们试一试烧瓶(Flask)这个模型框架,这个应用程序可让您管理和扩展您的云端业务;它允许管理人员浏览和计算商店的总销售额并从在线商店 - 服装。

二、什么是烧瓶?

        什么是烧瓶?它是一个Web框架 - 一个极简主义和轻量级的设计,用于在Python中构建Web应用程序。

        我们将在网上开设一家服装店。以下是我们的架构:

        

实际实现 v1-浏览器 — 控制器 — excel 组件;在下一集中,我们将把数据迁移到SQLite — Colaborate U2 : Excalidraw | Hand-drawn look & feel • Collaborative • Secure

我们的兴趣:时尚和服装网站。

服装是第一大时尚目的地,汇集了最好的高街品牌。

        用于选择我们在您的服装店参加的时尚活动的思维导图 — 图片来自此链接

三、具体的实现服装电子商务的步骤 

        这是我们最初的服装百货商店库存:

Download db: (Sales — Dez.xlsx)

        

领口系列。图片来自此链接

棉花收藏。图片来自此链接

让我们开始吧!

0# 步骤 — 转到 Replit,创建一个帐户(如果还没有:)并在下面粘贴这些代码(或将其分叉:);我建议您先让它工作,他们尝试该应用程序,然后才尝试推理。Python很容易理解!

 What is Replit used for?

Replit being Software as a 
service (SaaS) allows users to 
create online projects (called 
Repls, not to be confused 
with REPLs) and write code. 

1# 步骤 — 加载数据库(点击 Replit 仪表板)snowman

熊猫烧瓶库一起使用。

from flask import Flask
import pandas as pd

app = Flask(__name__)
table = pd.read_excel("Sales - Dez.xlsx")

        此烧瓶代码执行以下任务:

  1. 导入必要的模块:代码使用语句导入 Flask 模块和 Pandas 模块。Flask用于创建Web应用程序,而pandas是用于数据操作和分析的库。import
  2. 创建 Flask 应用程序对象:该行创建 Flask 类的实例,该类表示 Flask 应用程序。该参数是一个特殊的 Python 变量,用于获取当前模块的名称。它通常用作 Flask 查找模板和静态文件等资源的参考点。app = Flask(__name__)__name__
  3. 读取 Excel 文件:该行使用 pandas 读取名为“Sales - Dez.xlsx”的 Excel 文件,并将其加载到名为 的 pandas 数据帧中。Excel 文件可能包含销售数据,该函数分析文件的内容并创建数据帧,这是一个表格数据结构。table = pd.read_excel("Sales - Dez.xlsx")tableread_excel()

        通过执行这些代码行,将设置 Flask 应用程序,并将 Excel 文件中的销售数据加载到 pandas 数据帧中。这允许我们在您的 Flask 路由中使用数据帧并对销售数据执行操作,例如筛选、聚合或基于数据生成响应。table

2# step — 定义 ,返回总销售额root route

@app.route("/")
def gross_sales():
  gross_sales = float(table["total of sales"].sum())
  return {"gross_sales": gross_sales}

此 Flask 代码为根 URL (“/”) 定义一个路由,并创建一个名为处理对该路由的请求的函数。以下是它的作用:gross_sales()

  1. 装饰器指定在向根 URL (“/”) 发出请求时应调用此函数。@app.route("/")
  2. 在函数内部,该行计算 Pandas 数据帧中“销售总额”列的总和,并将其分配给变量。该方法用于计算列值的总和。gross_sales = float(table["total of sales"].sum())tablegross_sales.sum()
  3. 计算值作为 JSON 响应使用该语句返回。它被包装在带有键“gross_sales”的字典中。响应将具有格式为 ,其中表示销售额的总和。gross_salesreturn{"gross_sales": <value>}<value>

当对根 URL (“/”) 发出请求时,将执行该函数。它从数据帧中的“销售总额”列计算总销售额,并将其作为 JSON 响应返回。此终结点可用于从数据集中检索总销售额信息。gross_sales()table

3# step — 终点将所有 50 个项目分组和求和/sales/products

@app.route("/sales/products")
def sales_products():
  table_prod_sales = table[["products",
                            "total of sales"]].groupby("products").sum()
  sales_products_json = table_prod_sales.to_dict()
  return sales_products_json

        此代码提供了一个 API 终结点,用于检索数据库中所有产品的销售数据,并将其作为 JSON 响应返回。销售数据包括每个产品的总销售额。此终结点可用于以方便的 JSON 格式提取所有产品的销售数据。

        以下是代码的工作原理:

  1. 路由是使用带有 URL 模式“/sales/products”的装饰器定义的。这意味着路由需要对“/sales/products”URL 的请求;@app.route()
  2. 当向此路由发出请求时,将执行该函数;sales_products()
  3. 在函数内部,将创建 的子集,仅包含“产品”和“销售总额”列。该方法用于按产品对数据进行分组,并计算每个产品的销售额总和。我们使用 Pandas 数据帧通过传递两个字段的列表来搜索表,然后将它们分组并取总和。这一行我们带来了表格的一个子集;table.groupby("products").sum()productstotal of sales;
  4. 使用该方法将分组的销售数据转换为字典并存储在变量中;.to_dict()sales_products_json
  5. 包含所有产品的销售数据的字典作为 JSON 响应返回。sales_products_json

        通过搜索传递两个字段列表的表,然后将它们分组并取总和。这行我们带来了这个表格:productstotal of sales; 

products, consolidated	total grouped
Amaryllis Dress,	96991.00 
Aster Pants,	39111.00 
Boat Neck,	15355.00 
Breathable Dobby,	14744.00 
Crew Neck,	52793.00 
Denim Jeans,	26720.00 
Dobby Dress,	60614.00 
Draped,	20191.00 
Fig Dress,	172768.00 
Flora Blouse,	53576.00 
Forrest Jumpsuit,	188215.00 
Gambit Pinafore,	63883.00 
Giger Dress,	19170.00 
Ginger Skirt,	18450.00 
Halter,	6020.00 
Halter Light,	9048.00 
Halter Woven,	15162.00 
Illusion,	200.00 
Jarrah Dress,	31800.00 
Jeans Jackets,	21432.00 
Jeans Skirt,	6240.00 
Jeans Unisex,	11532.00 
Karri Top,	8160.00 
Kerria Anorak,	331636.00 
Keyhole,	8844.00 
Microtex Blouses,	15827.00 
Off-Shoulder,	12420.00 
One-Shoulder,	11658.00 
Peter Pan Collar,	268020.00 
Plunging,	12036.00 
Poppy Dress,	12403.00 
Sew Summer Tops,	92879.00 
Soft Trench,	488848.00 
Square Neck,	17864.00 
Standard Shirts,	20770.00 
Strapless,	33354.00 
Surplice,	28052.00 
Sweetheart,	49840.00 
Sweetheart Cotton,	177031.00 
Sweetheart Unisex,	23968.00 
Trench Coat,	269.00 
Trillim Essemble,	29427.00 
Trillim Essemble Ginger,	11641.00 
Trillim Essemble Microtex,	34883.00 
Turtleneck,	10701.00 
Ursi Assemble,	44751.00 
V-Neck,	13910.00 
Vallea Tunic,	31204.00 
Victorian,	58896.00 
Women Pants,	124004.00 

这是通过以下烧瓶路由返回的:

/sales/products/<item>/sales/products and you can use it to make search using the next route:

4# step — 这将按项目名称搜索我们的数据库

@app.route("/sales/products/<item>")
def sales_per_item(item):
  table_prod_sales = table[["products", "total of sales"]].groupby("products").sum()
  if item in table_prod_sales.index:
    item_sales = table_prod_sales.loc[item]  
    sales_item_json = item_sales.to_dict()
    return sales_item_json
  else:
    return {item: "Not Found in this database"}

        此代码提供了一个 API 终结点,该终结点从数据库中检索特定产品的销售数据,并将其作为 JSON 响应返回。如果在数据库中找不到该项,它将返回一条相应的消息,指示未找到该项

        以下是代码的工作原理:

  1. 路由是使用装饰器定义的,将 URL 模式指定为“/sales/products/<item>”。这意味着路由需要“/sales/products/<item>”形式的 URL,其中“<item>”可以替换为产品名称;@app.route()
  2. 参数将传递给函数 。itemsales_per_item(item)
  3. 在函数内部,创建了 的子集,仅包含“产品”和“总销售额”列;该方法用于按产品对数据进行分组,并计算每个产品的销售额总和。table.groupby("products").sum()
  4. 该函数检查分组销售数据的索引中是否存在指定的值。如果是,则使用 检索该项目的销售数据item.loc[item];
  5. 物料的销售数据使用该方法转换为字典并存储在变量中。.to_dict()sales_item_json
  6. 如果在销售数据中找到该项目,则字典将作为 JSON 响应返回;sales_item_json
  7. 如果在销售数据中找不到该项,则返回具有单个键值对的字典,其中 是键,值是“在此数据库中找不到”。这表示在数据库中找不到指定的项。item

5# 步 — 最后一行

app.run(host="0.0.0.0")

Flask 中的行启动 Flask 开发服务器并将其绑定到 IP 地址“0.0.0.0”。app.run(host="0.0.0.0")

以下是它的作用:

  1. app引用已创建的 Flask 应用程序对象。
  2. 在对象上调用该方法以启动 Flask 开发服务器。run()app
  3. 参数设置为“0.0.0.0”。这意味着开发服务器将绑定到计算机上的所有可用网络接口,允许它接受来自任何 IP 地址的请求。host

通过使用“0.0.0.0”作为主机,可以从同一网络上的其他设备访问 Flask 应用程序。当您想要从其他设备测试或访问 Flask 应用程序或允许外部访问时,这非常有用。

请务必注意,使用“0.0.0.0”作为主机可以使网络上的任何人都可以访问您的应用程序,因此在生产环境中使用此配置时要谨慎并考虑适当的安全措施

6# 步 — 一气呵成

from flask import Flask
import pandas as pd

app = Flask(__name__)
table = pd.read_excel("Sales - Dez.xlsx")


@app.route("/")
def gross_sales():
  gross_sales = float(table["total of sales"].sum())
  return {"gross_sales": gross_sales}


@app.route("/sales/products")
def sales_products():
  table_prod_sales = table[["products",
                            "total of sales"]].groupby("products").sum()
  sales_products_json = table_prod_sales.to_dict()
  return sales_products_json


@app.route("/sales/products/<item>")
def sales_per_item(item):
  table_prod_sales = table[["products", "total of sales"]].groupby("products").sum()
  if item in table_prod_sales.index:
    item_sales = table_prod_sales.loc[item]  
    sales_item_json = item_sales.to_dict()
    return sales_item_json
  else:
    return {item: "Not Found in this database"}

app.run(host="0.0.0.0")

四、一种注释

Flask 的目的是什么?

[CHAT-GPT]
Flask 是一个流行的 Web 框架用于构建网络应用程序在Python中。

其目的是为开发者提供 以一种简单而灵活的方式创建 Web 应用程序和 API。

Flask 以其简约而闻名和轻量化设计,允许开发商拥有更多控制权开发过程并做出根据他们的决定具体项目要求。

Flask 的主要目的是处理低级细节网络开发,例如路由 HTTP 请求到适当的功能,管理会话数据,并生成 HTTP 响应。

它提供了一套工具和有助于简化的库的发展过程,使得更容易构建网络应用程序使用Python。

Flask 遵循“微”框架
哲学,这意味着它提供仅核心功能需要构建网络应用程序,同时允许开发者添加附加功能和扩展按要求。

这种简约的方法使得Flask 高度通用,允许开发商要保留他们的应用轻量级和高效。

简单性和灵活性
Flask 做出了贡献其在开发商中的受欢迎程度。其学习程度相对较低曲线,使其触手可及对于初学者,同时仍然提供必要的功能对于更复杂的项目。

Flask 也有一个大的和活跃的社区,这意味着有很多资源和可提供帮助的扩展开发人员构建稳健和可扩展的网络应用程序。

这就是所有,再见!

更多推荐

电动车充电桩存在网络安全风险吗?

近年来,随着纯电和混动汽车数量的爆炸式增长,其配套的充电桩的需求也呈直线攀升趋势。不过,这些充电桩可能面临着独特的网络安全风险。只要黑客们掌握了足够的相关信息,他们不但能够远程关闭供电网络,甚至会入侵和篡改汽车的设置。下面,我们将深入讨论此类至关重要的安全问题。为什么电动汽车充电桩会存在网络安全风险?2021年,美国曾

数据分析及治理工程师

背景企业的信息化建设需要数据,那么数据是很重要的,数据分析的目的在于为业务服务,而为了更好的达成这一目的。对于元数据的采集和主数据的分析,以及数据标准的制定,和数据质量的保证是非常重要的。主数据管理面临的问题分析主数据治理可以提高数据的特征一致性,识别唯一性,高度共享性,长期有效性,可以获得一个单一的基础数据来源,为企

互联网摸鱼日报(2023-09-22)

互联网摸鱼日报(2023-09-22)36氪新闻通过AI打造车联网地图,「Mapbox」获软银2.8亿美元E轮投资消失的维密门店,以及背后的内衣暗战白酒品牌频跨界:饮料就酒,越喝越有张一鸣北美电商大冒险拆解小程序短剧“一天进账1200万”商业真相​奈飞继续“飞翔”A股银行回购为何“按兵不动”?监管机制约束,部分银行资本

热更新的前置模块:AB管理器

引言本系列是《8年主程手把手打造Cocos独立游戏开发框架》,欢迎大家关注分享收藏订阅。前面的文章给大家介绍了手敲Cocos独立游戏开发框架中常用到的UI管理器和资源管理器,为了减少包体的大小,我们需要引入热更新的模块,但是热更新的前提是把资源打成AssetBundle(简称AB),本文笔者给大家介绍一下AB和AB管理

【MySQL】SQL优化

SQL优化插入数据普通插入:采用批量插入(一次插入的数据不建议超过1000条,500-1000为宜)手动提交事务主键顺序插入(主键顺序插入的效率大于乱序插入)大批量插入:如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令插入。#客户端连接服务端时,加上参数--

【Leetcode Sheet】Weekly Practice 7

LeetcodeTest1462课程表Ⅳ(9.12)你总共需要上numCourses门课,课程编号依次为0到numCourses-1。你会得到一个数组prerequisite,其中prerequisites[i]=[ai,bi]表示如果你想选bi课程,你必须先选ai课程。有的课会有直接的先修课程,比如如果想上课程1,你

Zookeeper集群 + Kafka集群

Zookeeper集群+Kafka集群Zookeeper概述Zookeeper定义*Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。Zookeeper工作机制*****Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数

PY32F003F18之ADC问题

普然单片机PY32F003F18的内部有一个LDO,其电压固定为1.2V。我在用官方程序测试时,若接上USB转串口的RX导线,向PC发送数据,读内部参考电压比较正确,但是,当接上USB转串口的TX导线时,发现读到内部电压变成了3.3V。见下图:断开USB转串口的TX导线,数据又恢复正常了。用万用表测试该导线电压,为5V

最新中国各地区新能源汽车产量及123个公司公共充电桩数量数据(2015-2023)

数据简介:2010年,《国务院关于加快培育和发展战略性新兴产业的决定》将新能源汽车产业列为战略性新兴产业之一。9月5日,在工信部召开的重点行业稳增长新闻发布会上,工信部装备工业一司司长王卫明表示,今年1—7月,我国新能源汽车产销超过450万辆,同比增长超过40%,其中出口63.6万辆,同比增长1.5倍,成为我国经济的一

go并发(进程、线程、协程)

背景go强大的多线程能力很强大,能并发处理大量的任务。详细案例分类主要介绍go中的进程、线程、协程这三个东西。它们的关系按照内存大小的关系依次是进程>线程>协程(一般一个协程2K)。进程进程基本上是一个正在执行的程序,它是操作系统中最小的资源分配单位。比如电脑上运行的一个软件就是一个进程。go开启进程的方式有三种,本质

MySQL(2) Explain

1、概念使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈2、使用在select语句之前增加explain关键字,MySQL会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL在explain语句后马上执行一条showwarnings语句,会展示mysql对上

热文推荐