Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设置为整数的列在运行时是字符串_Python_Sqlalchemy - Fatal编程技术网

Python 设置为整数的列在运行时是字符串

Python 设置为整数的列在运行时是字符串,python,sqlalchemy,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 列被显式地类型化为整数。但是,

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

class PlanetModel(Base):
    __tablename__ = 'planetProbe'
    size = Column("SIZE", Integer)
    used_space = Column("USEDSPACE", Integer)
max_available_space = planet.size - planet.used_space
列被显式地类型化为整数。但是,当我与模型交互时,就像这样:

class PlanetModel(Base):
    __tablename__ = 'planetProbe'
    size = Column("SIZE", Integer)
    used_space = Column("USEDSPACE", Integer)
max_available_space = planet.size - planet.used_space
I get-TypeError:-:“str”和“str”的操作数类型不受支持


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

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

int value = Integer.parseInt(String value);

出现此错误是因为这两个值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)

我必须承认,我知道这个问题不是最好的。不幸的是,我对Python和SQLAlchemy没有太多经验。我问这个问题是因为我正在测试一个别人写的程序,我希望它能正常工作。当我运行它时,我惊讶地发现一个赤裸裸的打字错误。我试图弄清楚为什么我会犯这样的错误,以防在我和给我这个程序的人交谈之前,这是一个很容易解决的问题。如果这是我可以通过谷歌搜索解决的问题,我会很感激被告知要搜索哪些术语——到目前为止,我的研究没有任何帮助。即使列被声明为整数,属性也可以通过不同的机制使用字符串值。一种方法是db中的列实际上是varchar;或者,您的驱动程序有问题,无法正确解释int值。如果您不使用常用的设置,则可能会发生这种情况;或者,您只是简单地将它们显式地设置为strs,可能是通过用户输入,并且在保存时没有刷新该更改,因为db知道进行自动强制转换,但当您尝试对它们进行操作时,它不起作用。我试过了。不幸的是,我以后需要将一个值保存到这些列中的一列,但这不起作用。Python给了我另一个TypeError,说我不能在字符串变量中放入整数。您需要将整数解析回字符串并将其分配给列。这看起来像Java代码。我的问题是关于Python的。