将字符串转换为浮点数 SQLAlchemy

Convert string to float SQLAlchemy

从数据库中读取时,有什么方法可以将字符串转换为浮点数吗?
所以我的列 size 由字符串值组成(即 "45"

当我使用 SQL Alchemy 查询数据库时,我如何获得浮点值。

我知道最简单的方法是 float(value) 但是如果值为 NULL 我需要处理捕获异常等。 在 SQLAlchemy 中有快速的方法吗?

示例: 给我浮点值,如果它存在 else return None

可能的解决方案:

myFloat = lambda x: float(x) if x!="NULL" else None
myFloat("45")
myFloat("NULL")

创建一个列类型,为您进行与数据库之间的转换。 See the documentation about TypeDecorator.

from sqlalchemy import String
from sqlalchemy.types import TypeDecorator

class StringFloat(TypeDecorator):
    impl = String

    def process_literal_param(self, value, dialect):
        return str(float(value)) if value is not None else None

    process_bind_param = process_literal_param

    def process_result_value(self, value, dialect):
        return float(value) if value is not None else None

这假定数据库中的值是有效的浮点数或 NULL。如果还有其他字符串,您可以在 float() 调用周围添加一个 try 块。

在定义 table 或模型时使用此类型而不是 StringFloat

class MyModel(Base):
    # ...
    size = Column(StringFloat)
    # ...