我有一个非常奇怪的错误,我无法解释。它发生在我结合python和sqlite时。我有一个表包含一个名为stop_lat的REAL字段。当我运行以下代码时:
c = conn.cursor()
c.execute("select stop_lat from stops;")
for (stop_lat, ) in c:
print stop_lat
print type(stop_lat)
stop_lat = int(stop_lat*1000)
我得到以下输出
stop_lat
<type 'unicode'>
Traceback (most recent call last):
File "./extract_data_tools/extract_trips.py", line 47, in <module>
stop_lat = int(stop_lat*1000)
ValueError: invalid literal for int() with base 10: 'stop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_latstop_lat'
现在当我注释掉最后一行时,意味着我执行
c = conn.cursor()
c.execute("select stop_lat from stops;")
for (stop_lat, ) in c:
print stop_lat
print type(stop_lat)
#stop_lat = int(stop_lat*1000)
我得到以下输出:
37.743804
<type 'float'>
37.780889
<type 'float'>
37.772006
<type 'float'>
37.723433
<type 'float'>
37.783026
<type 'float'>
...
意味着stop_lat的类型取决于我是否将它传递给int ...这对我来说没有任何意义。它甚至变得陌生。以下代码
c = conn.cursor()
c.execute("select stop_lat from stops;")
for (stop_lat, ) in c:
print stop_lat
print type(stop_lat)
stop_lat = stop_lat*1000
print stop_lat
print type(stop_lat)
输出
37.780889
<type 'float'>
37780.889
<type 'float'>
37.772006
<type 'float'>
37772.006
<type 'float'>
37.723433
<type 'float'>
37723.433
<type 'float'>
37.783026
<type 'float'>
37783.026
<type 'float'>
...
任何人都可以向我解释这里发生了什么吗?如果没有sqlite在游戏中(即代码文字按预期工作),我无法重现问题。
答案 0 :(得分:2)
在我看来,更多的是改变了注释掉的行。
第一个SQL语句似乎正在运行,select "stop_lat" from stops
而另一个SQL语句没有引号:select stop_lat from stops
。