设置为Integer的列是运行时的字符串

时间:2017-05-19 05:30:13

标签: python sqlalchemy

我有一个使用SQLAlchemy为数据库表中的记录建模的类,如下所示:

class PlanetModel(Base):
    __tablename__ = 'planetProbe'
    size = Column("SIZE", Integer)
    used_space = Column("USEDSPACE", Integer)

列显式地键入为整数。但是,当我与模型交互时,就像这样:

max_available_space = planet.size - planet.used_space

我得到TypeError: unsupported operand type(s) for -: 'str' and 'str'

我应该从哪里开始寻找可能导致我的模型中的值被输入为字符串的内容,即使它们使用sqlalchemy在代码中明确标记为整数?

2 个答案:

答案 0 :(得分:0)

您收到此错误是因为这两个值" planet.size"和" planet.used_space"是字符串类型

a = "value1"
b = "value2"

print a - b

输出:

 print a - b
TypeError: unsupported operand type(s) for -: 'str' and 'str'

只需对其进行显式强制转换,因为您确定这两列始终包含整数值

max_available_space = int(planet.size) - int(planet.used_space)

答案 1 :(得分:-2)

您需要先将字符串解析为整数。

Exception from HRESULT: 0xC020204A (Microsoft.SqlServer.DTSPipelineWrap)