如何将列表值转换为整数

0 投票
2 回答
3098 浏览
提问于 2025-04-19 16:19

我有一个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]就行了。

撰写回答