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