SqlAlchemy setter, getter

SqlAlchemy setter, getter

提问人:Aram 提问时间:8/10/2023 最后编辑:Aram 更新时间:8/11/2023 访问量:52

问:

我对一个问题很感兴趣。通常,为了从数据库中获取/放置数据并解码/编码,逻辑被写入路由器或单独的函数中,这些函数无论如何都会在路由器中调用。是否可以在装饰器的模型中调用这些函数?如果您分享有类似情况的文档链接,我将不胜感激。

我曾经@property,@hybrid_property......喜欢

...
@property
def test_get(self) -> List[Dict[str, str]]:
  if self.test:
    return [{'test', 'test'}] # or function callback
  return []

我会写得更详细。在使用 JSON 字段使用 PostageSQL 和 FastAPI 在数据库中存储大量数据时,我遇到了缓冲区满的问题。我将地理坐标(如纬度和经度)存储在 Dict 列表中 {lat: 55.555, lon: 55.555} 为了减小数据的大小,我决定压缩数据并用 Base64 进行编码。问题是我的架构因此无法正常运行。因此,我想使用 SQLAlchemy getter,以便在从数据库中选择数据时,它会立即以 List of Dict 的形式接收坐标。但是,我没有遇到具有近似应用程序的文档。

db = SessionLocal()
point = db.query(MapPoint).filter(MapPoint.id == point_id).first()
print(point.coordinates) # [{lat: 55.555, lon: 55.555}]
sqlalchemy(sqlalchemy) 法斯塔皮 文档 吸气机-setter

评论

0赞 Aram 8/11/2023
是的,Sry。我需要用明确的例子问一个更具体的问题。
0赞 MatsLindh 8/11/2023
您是否见过允许您创建自定义类型以序列化/反序列化到另一个字段类型/从另一个字段类型序列化/反序列化的 docs.sqlalchemy.org/en/20/core/custom_types.html 自定义类型?这样,您可以在值更新时进行编码,并在再次获取时自动反序列化它?(我认为 base64 编码内容没有任何意义,但我可能在您的示例中遗漏了一些明显的东西)。
0赞 Aram 8/11/2023
你是对的,这没有意义,我只是决定使用 base64 来保持视觉紧凑。是的,我想使用 getter,因为据我了解,它们允许您为某些数据设置自己的行为。因此,如果您安装一个 getter,当向数据库请求时,它会立即返回解压缩的数据,我将摆脱重复的代码。再次感谢您的帮助和回答。

答: 暂无答案