小编Hau*_*ard的帖子

如何从 SQL 查询中的计算字段创建 SqlAlchemy 类属性?

问题

我正在尝试使用 FastAPI 框架创建一个 API,该框架允许从 PostgreSQL / PostGIS 数据库获取数据。我遵循了 FastAPI SQL教程,到目前为止已经成功创建了基本结构。

但是,我现在面临一个无法解决的问题:我想通过路线提供有关对象的基本信息,包括其地理信息(目前是几何形状和面积)。

我设法使用 GeoAlchemy 获取几何图形,并使用自定义函数将其解析为 pydantic 验证器。但我没有找到任何方法来解析该区域,该区域必须通过 postgresql 查询来计算,因为它与特定的 PostGIS 函数相关联。

我的第一次尝试是将函数添加到 crud 文件中的查询中。但这不起作用。查询函数似乎返回了 pydantic 验证器无法识别的两个对象。我试图在互联网上寻找其他可能性,但提供的解决方案(hybrid_property、column_property)主要适用于简单的数据类型,允许在 python 代码中创建“计算”属性。

你知道我如何绕过这个问题吗?感谢您的帮助

这是我最初尝试的代码

数据库.py

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

RAW_DB_CONNECTION = "**************"

engine = create_engine(RAW_DB_CONNECTION)

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()
Run Code Online (Sandbox Code Playgroud)

crud.py

from sqlalchemy import func
from sqlalchemy.orm import Session
from . import models, schemas


def parcelle_get_basic_info(db: Session, id: str):
    return db.query( …
Run Code Online (Sandbox Code Playgroud)

python postgis sqlalchemy pydantic fastapi

5
推荐指数
0
解决办法
1275
查看次数

标签 统计

fastapi ×1

postgis ×1

pydantic ×1

python ×1

sqlalchemy ×1