I'm writing a module to act on data being sent to a database from Python. Since boolean is not a SQL datatype, those values have to be converted to some pre-defined value. I decided while defining the tables that I would use 'T' and 'F' in a varchar(1) field as my Boolean stand in.
In attempting to make this conversion while being properly Pythonic, I did a direct comparison and acted on the results, as so:
if SQLParameters[i] == True:
SQLParameters[i] = 'T'
elif SQLParameters[i] == False:
SQLParameters[i] = 'F'
This is on code that runs regardless of type, so if SQLParameters[i]
is 1 or "Blarg" or 123, I just want to leave it alone, whereas when it's a Boolean, I need to perform the conversion.
This worked just fine until I tried to insert the actual value 1 (one), at which point I learned that 1 == True = True
. I can plainly see two possible solutions for this issue:
Does anyone have an idea about how to accomplish this without either changing the data dictionary or explicitly checking the type?
You can use is
:
if SQLParameters[i] is True:
SQLParameters[i] = 'T'
elif SQLParameters[i] is False:
SQLParameters[i] = 'F'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With