我有一个带有值(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])
我发现我必须做一些如此愚蠢的事情真的很奇怪,所以一定是我的错,任何人都可以启发我,哪里弄错了?
答案 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]