如何将列表值转换为整数
我有一个pyodbc的行,里面的值是(9, )。我想把这个值读到一个简单的整数变量里,但发现这太难了。(我刚学Python,可能错过了一些简单的东西)
我试着用简单的 int(a_row[0])
,结果是-
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
查询的 fetchall 输出结果是一个包含多个 pyodbc.Row 的列表:
>>> 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]
0
你的解决方案并没有把它强制转换成整数;它其实是在创建一个包含row_id[0]
中元素(也就是Row
)的数组,然后再提取第一个元素。所以你一开始其实可以直接用a_row[0][0]
就行了。