将字符串转换为浮点数 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 或模型时使用此类型而不是 String
或 Float
。
class MyModel(Base):
# ...
size = Column(StringFloat)
# ...
从数据库中读取时,有什么方法可以将字符串转换为浮点数吗?
所以我的列 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 或模型时使用此类型而不是 String
或 Float
。
class MyModel(Base):
# ...
size = Column(StringFloat)
# ...