У меня очень странная ошибка, которую я не могу объяснить. Это происходит, когда я объединяю python и sqlite. У меня есть таблица, которая содержит поле REAL с именем stop_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)
Я получаю следующий вывод
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)
выходы * * 1016
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 (то есть литералы кода работают как положено).