Я пишу модуль для обработки данных, отправляемых в базу данных из Python.Поскольку логическое значение не является типом данных SQL, эти значения должны быть преобразованы в предварительно определенное значение.При определении таблиц я решил, что я буду использовать 'T' и 'F' в поле varchar (1) в качестве моего логического элемента.
Пытаясь сделать это преобразование, будучи должным образом Pythonic, я сделалпрямое сравнение и действовал на результаты, так:
if SQLParameters[i] == True:
SQLParameters[i] = 'T'
elif SQLParameters[i] == False:
SQLParameters[i] = 'F'
Это код, который выполняется независимо от типа, поэтому, если SQLParameters[i]
равен 1 или «Blarg» или 123, я просто хочу оставить егов одиночку, тогда как когда это логическое значение, мне нужно выполнить преобразование.
Это работало очень хорошо, пока я не попытался вставить фактическое значение 1 (один), после чего я узнал, что 1 == True = True
.Я ясно вижу два возможных решения этой проблемы:
- измените словарь данных, чтобы использовать 0 и 1 в поле числа (1) в качестве логического заменителя, упрощая преобразование
- добавьте условие в приведенный выше код, чтобы проверить фактический тип параметра, который нужно преобразовать (что мне кажется неумным).
Кто-нибудь имеет представление о том, как выполнить это безизменить словарь данных или явно проверить тип?