我试图访问Microsoft Access数据库表中的某些列,其中包含double类型的数字,但是出现标题中提到的错误。查询数据库如下所示,错误发生在执行cur.execute(....)命令的行中。基本上我试图过滤掉在特定时间间隔内捕获的数据。如果我排除在cur.execute(....)命令中包含双数据类型的列CM3_Up,CG3_Up,CM3_Down,CG3_Down,我不会得到错误。同样的逻辑被用来从其他表访问双数据类型,它工作正常,我不知道什么是错的。ValueError:无法将字符串转换为浮点数:E-3
代码:
start =datetime.datetime(2015,03,28,00,00)
a=start
b=start+datetime.timedelta(0,240)
r=7
while a < (start+datetime.timedelta(1)):
params = (a,b)
sql = "SELECT Date_Time, CM3_Up, CG3_Up, CM3_Down, CG3_Down FROM
Lysimeter_Facility_Data_5 WHERE Date_Time >= ? AND Date_Time <= ?"
for row in cur.execute(sql,params):
if row is None:
continue
r = r+1
ws.cell(row = r,column=12).value = row.get('CM3_Up')
ws.cell(row = r,column=13).value = row.get('CG3_Up')
ws.cell(row = r,column=14).value = row.get('CM3_Down')
ws.cell(row = r,column=15).value = row.get('CG3_Down')
a = a+five_min
b = b+five_min
wb.save('..\SE_SW_Lysimeters_Weather_Mass_Experiment-02_03_26_2015.xlsx')
完全错误报告:
Traceback (most recent call last):
File "C:\DB_PY\access_mdb\db_to_xl.py", line 318, in <module>
for row in cur.execute(sql,params):
File "build\bdist.win32\egg\pypyodbc.py", line 1920, in next
row = self.fetchone()
File "build\bdist.win32\egg\pypyodbc.py", line 1871, in fetchone
value_list.append(buf_cvt_func(alloc_buffer.value))
ValueError: could not convert string to float: E-3
在Python中,它将是float(row.get('CM3_Up'))'。 –
我试过float(row.get('CM3_Up'))但显示相同的错误。只需添加一些细节,从访问数据库中读取的值如下所示:-2.91953029510136(CM3_Up),-84.8983788757143(CG3_Up),3.04633983884509(CM3_Down), - 5.80184926507136(CG3_Down)。 – Mukunda
@Mukunda - 你能提供一个小样本数据库与导致错误的表?如果是这样,请将其上传到互联网可访问的位置(如[Wikisend](http://wikisend.com/)),并在此处发布链接,以便我们尝试重新创建问题。 –