Pythonic布尔转换

All*_*lan 4 python database boolean

我正在编写一个模块来处理从Python发送到数据库的数据.由于boolean不是SQL数据类型,因此必须将这些值转换为某个预定义值.我决定在定义表时,我会在varchar(1)字段中使用'T'和'F'作为我的布尔值.

在尝试使用Pythonic时进行此转换时,我进行了直接比较并对结果采取了行动,如下所示:

        if SQLParameters[i] == True:
            SQLParameters[i] = 'T'                
        elif SQLParameters[i] == False:
            SQLParameters[i] = 'F'
Run Code Online (Sandbox Code Playgroud)

这是在不管类型的情况下运行的代码,因此如果SQLParameters[i]是1或"Blarg"或123,我只想不管它,而当它是布尔值时,我需要执行转换.

这工作得很好,直到我试图插入实际值1(一),此时我学会了1 == True = True.我可以清楚地看到这个问题的两种可能的解决方案:

  1. 将数据字典更改为使用数字(1)字段中的0和1作为布尔替换,使转换更简单
  2. 在上面的代码中添加一个条件来检查要转换的参数的实际类型(这让我觉得是unpythonic).

有没有人知道如何在不更改数据字典或显式检查类型的情况下完成此操作?

sth*_*sth 9

你可以使用is:

if SQLParameters[i] is True:
    SQLParameters[i] = 'T'                
elif SQLParameters[i] is False:
    SQLParameters[i] = 'F'
Run Code Online (Sandbox Code Playgroud)