2015-05-01 3 views
0

Я пытаюсь использовать логику неэтилированного Python, чтобы определить, должен ли выполняться оператор if. Однако оператор if работает, даже если переменные равны «None».Python pymysql, если переменная равна None: логика не работает

for row in rows: 
    serialnum = row[0] 
    lat  = str(row[1]) 
    lng  = str(row[2]) 
    if lat is None: 
     print "none" 
    else: 
     print serialnum + " lat: " + lat + " long: " + lng 
     jsonfile.write(
      ' {\n' 
      '  "name": "' + serialnum + '",\n' 
      '  "url": "campaigndetails.php?serial=' + serialnum + '",\n' 
      '  "lat": ' + lat + ',\n' 
      '  "lng": ' + lng + '\n' 
      ' },\n' 
     ) 

Значения lat, lng и serialnum извлекаются из запроса MySQL. Все правильно, но логика для оператора if позволяет записывать в файл, даже когда lat == Нет

.

Что мне не хватает?

+1

Как примечание стороны, почему вы генерирующий JSON вручную, вместо того, чтобы просто создать Dict и используя 'json.dumps'? – abarnert

+0

Это может быть невежество, но я использую запрос для создания файла для экземпляра OpenStreetMaps. Я нашел там, что «Нет» не дживит с JSON здесь. Я возьму ваш совет и займусь этим подходом. Благодарю. – xianbei

+0

Если вы кодируете значение «Нет» с помощью JSON, вы получаете JSON «null», который должен работать отлично с другой стороны. И если это не так, вы можете преобразовать его в исходную структуру данных и 'json.dumps' в любом случае. Нет никакой причины писать настраиваемое форматирование строки JSON, если у вас нет сломанного клиента, который заботится о порядке или чем-то еще, что не является частью действительного JSON в первую очередь. – abarnert

ответ

1

lat = str(row[1]) никогда не может быть ни один, потому что это улица, так что это не может быть «Нет», возможно,

+0

Или, лучше, проверьте, является ли это 'None' _before_ преобразованием его в' str'. – abarnert

+0

@abamert согласился, я не предлагал тестирование равенства строк, или я не хотел этого, я просто наблюдал, какое значение он мог бы провести в этом тесте –

+1

В любом случае, это объясняет его проблему; если он не понимает отсюда, как это исправить, он может следить. – abarnert

Смежные вопросы