如何将列表值转换为int

时间:2014-09-03 20:10:17

标签: python list casting

我有一个带有值(9,)的pyodbc行 我试图将值读入一个简单的整数变量,我发现它很难这样做。 (我是python的新手,所以我可能会想念一些愚蠢的东西)

做一个简单的int(a_row[0]) get -

TypeError: int() argument must be a string or a number, not 'pyodbc.Row'

我首先尝试将行转换为列表,并且结果相同

我必须强制它成一个整数值才能工作

row_id=(2, )

temp_num=0

temp_num = [number for number in row_id[0]]

temp_num=int(temp_num[0])

我发现我必须做一些如此愚蠢的事情真的很奇怪,所以一定是我的错,任何人都可以启发我,哪里弄错了?

2 个答案:

答案 0 :(得分:0)

你的解决方案并没有强迫它变成整数;它正在Row中创建一个元素数组(row_id[0] s),然后提取第一个元素。所以你最初可能刚刚完成a_row[0][0]

答案 1 :(得分:0)

查询 fetchall 的输出是 pyodbc.Row s的列表:

>>> x=cursor.execute('SELECT x FROM my_tbl limit 5;').fetchall()
>>> print(x)      # list of elements of type pyodbc.Row
[(3, ), (2, ), (0, ), (5, ), (1, )]
>>> type(x[0])
pyodbc.Row

要获取上面的查询提取的实际整数,请执行以下操作

>>> [row[0] for row in x]
[3, 2, 0, 5, 1]