我正在尝试使用 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)