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

如何进行公司网站的建设烟台百度网站

如何进行公司网站的建设,烟台百度网站,股份有限公司,电商商城平台定制说明: 应用Pydantic Model 验证/出入 数据, SqlAlchemy Model数据实体,Fastapi提供API机制支持。数据表的坐标字段采用Mysql的GEOMETRY类型目前还没成功使用Pydantic的Coordinate类型,待后续改良 要点: 输出的结果是…

说明:

  • 应用Pydantic Model 验证/出入 数据, SqlAlchemy Model数据实体,Fastapi提供API机制支持。
  • 数据表的坐标字段采用Mysql的GEOMETRY类型
  • 目前还没成功使用Pydantic的Coordinate类型,待后续改良
要点:
  • 输出的结果是DeviceLocationSimpleOut模型,里面的验证/转换方法需通过,否则不能录入成功

设计:

建表sql
/*==============================================================*/
/* Table: ia_iot_device_location                                */
/*==============================================================*/
create table ia_iot_device_location
(id                   bigint not null auto_increment  comment '',iot_device_id        bigint default 0  comment '',label                varchar(255)  comment '',coordinates          GEOMETRY not null  comment '地理坐标',create_datetime      datetime not null default CURRENT_TIMESTAMP  comment '创建时间',update_datetime      datetime not null default CURRENT_TIMESTAMP  comment '更新时间',delete_datetime      datetime  comment '',is_delete            tinyint not null default 0  comment '',primary key (id)
);/*==============================================================*/
/* Index: Index_1                                               */
/*==============================================================*/
create index Index_1 on ia_iot_device_location
(iot_device_id
);/*==============================================================*/
/* Index: Index_2                                               */
/*==============================================================*/
create SPATIAL index Index_2 on ia_iot_device_location
(coordinates
);
Pydantic Model

(apps\vadmin\iot\schemas\DeviceLocation.py)

#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version        : 1.0
# @Create Time    : 2024/05/22 20:45
# @File           : Device.py
# @IDE            : PyCharm
# @desc           : pydantic 模型,用于数据库序列化操作from pydantic import BaseModel, Field, ConfigDict, ValidationError, validator, field_validator, constr
from core.data_types import DatetimeStr
from datetime import datetime, timezone, timedelta
from apps.vadmin.iot.models.data_types import *
from apps.vadmin.iot.utils import utils
from application import settings
from pydantic_extra_types.coordinate import Coordinate
from geoalchemy2.shape import to_shapeclass DeviceLocation(BaseModel):label: str | None = Field(None, title="标签")iot_device_id: int | None = Field(..., title="None")# coordinates: Coordinate | None = Field(..., title="地理坐标")coordinates: str | None = Field(..., title="地理坐标")class DeviceLocationSimpleIn(DeviceLocation):passclass DeviceLocationSimpleOut(DeviceLocation):model_config = ConfigDict(from_attributes=True)id: int = Field(..., title="编号")create_datetime: DatetimeStr = Field(..., title="创建时间")update_datetime: DatetimeStr = Field(..., title="更新时间")@validator("create_datetime", "update_datetime", pre=True)def convert_utc_to_local(cls, value):return utils.convert_utc_to_local(value)@field_validator("coordinates", mode="before")def turn_coordinates_into_wkt(cls, value):return to_shape(value).wkt
SqlAlchemy Model

(apps\vadmin\iot\models\models.py)

from typing import List, Optional
from datetime import datetime
from sqlalchemy import BigInteger, Column, DateTime, ForeignKey, ForeignKeyConstraint, Index, Integer, String, Table, Text, text
from sqlalchemy.dialects.mysql import TINYINT
from sqlalchemy.orm import Mapped, declarative_base, mapped_column, relationship
from sqlalchemy.orm.base import Mapped
from geoalchemy2 import Geometry, WKBElement
from sqlalchemy.orm import relationship, Mapped, mapped_column
from db.db_base import BaseModel
from .data_types import DeviceType
import uuid
import secretsmetadata = BaseModel.metadataclass DeviceLocation(BaseModel):__tablename__ = 'ia_iot_device_location'__table_args__ = (Index('Index_1', 'iot_device_id'),Index('Index_2', 'coordinates'))id = mapped_column(BigInteger, primary_key=True)coordinates: Mapped[WKBElement] = mapped_column(Geometry(geometry_type='POINT', spatial_index=True), nullable=False, comment='地理坐标')iot_device_id = mapped_column(BigInteger, server_default=text("'0'"))label = mapped_column(String(255, 'utf8mb4_general_ci'))
 FastApi 入口

(apps\vadmin\iot\views.py)

###########################################################
#    设备地理位置
###########################################################
@app.get("/device-location", summary="获取设备地理位置列表", tags=["设备地理位置"])
async def get_deviceLocation_list(p: params.DeviceLocation = Depends(), auth: Auth = Depends(AllUserAuth())):datas, count = await crud.DeviceLocationDal(auth.db).get_datas(**p.dict(), v_return_count=True)return SuccessResponse(datas, count=count)@app.post("/device-location", summary="创建设备地理位置", tags=["设备地理位置"])
async def create_deviceLocation(data: schemas.DeviceLocation, auth: Auth = Depends(AllUserAuth())):return SuccessResponse(await crud.DeviceLocationDal(auth.db).create_data(data=data))@app.delete("/device-location", summary="删除设备地理位置", description="硬删除", tags=["设备地理位置"])
async def delete_deviceLocation_list(ids: IdList = Depends(), auth: Auth = Depends(AllUserAuth())):await crud.DeviceLocationDal(auth.db).delete_datas(ids=ids.ids, v_soft=False)return SuccessResponse("删除成功")@app.put("/device-location/{data_id}", summary="更新设备地理位置", tags=["设备地理位置"])
async def put_deviceLocation(data_id: int, data: schemas.DeviceLocation, auth: Auth = Depends(AllUserAuth())):return SuccessResponse(await crud.DeviceLocationDal(auth.db).put_data(data_id, data))@app.get("/device-location/{data_id}", summary="获取设备地理位置信息", tags=["设备地理位置"])
async def get_deviceLocation(data_id: int, db: AsyncSession = Depends(db_getter)):schema = schemas.deviceLocationSimpleOutreturn SuccessResponse(await crud.DeviceLocationDal(db).get_data(data_id, v_schema=schema))

接口Example

 数据库记录

参考:

- Working with Spatial Data using FastAPI and GeoAlchemy

- sql server中对geometry类型的常用操作、SRID、GeoTools工具简单使用,geometry和geojson格式之间的转换_sqlserver sde geometry 转text-CSDN博客

http://www.yayakq.cn/news/999016/

相关文章:

  • 网站建设 发短信文案鞍山58同城网
  • 网站维护与建设内容国外酷炫flash网站
  • WordPress添加PHP代码济南网站优化seo
  • 龙岗网站建设过程在合肥做网站前端月薪大概多少
  • 百度做的网站迁移wordpress 页面添加js
  • 网站弹出咨询这个怎么做抖音seo关键词优化怎么做
  • 网站入口首页哪个做砍价活动的网站好
  • 衡水网站建设格公司哈尔滨网站建设公司名字
  • 网站开发所需能力消防网站建设目标
  • dedecms网站地图插件怎么用nat做网站
  • 上海自助建站广州市新闻最新消息
  • 网站首页模板程序开发工程师
  • app和网站的区别是什么网址给我一个
  • 南京做网站团队wordpress显示浏览次数
  • 做网站公司汉狮团队网络营销的期末试题及答案
  • 自己开发网站要多少钱qq安全网页版在线登录
  • 小说网页网站建设百度seo网站在线诊断
  • 外贸网站建设公司信息电子商务网站设计岗位主要是?
  • 上海做网站优化哪家好网站标签系统
  • 网站seo优化培训建网站与建网页的区别
  • 为何网站需改版百度网盘怎么找片
  • 网站开发研高端品牌粉碎机
  • 景区网站建设材料wordpress链接选项不见了
  • 长沙住房与城乡建设部网站风车网站做花盆磨具
  • 网站建设 武讯科技网页网站怎么做的
  • 公司内部网站怎么建立小企业网站建设流程
  • 做系统哪个网站上的好世界总人口实时数据
  • 怎么查一个网站做的外链网络推广销售是做什么的
  • 做网站用电脑自带的wordpress顶部导航栏再哪里创建
  • 分类网站建设wordpress mylife