我为一个烧瓶项目设置了一个postgresql数据库。我的项目中有一个布尔类型的result_c = [ (x, y) for (x, y) in test_points if -1 < x < 1 and -1 < y < 1 ]
列。当我尝试写入数据库时。这是我得到的错误:
ticked
确实,我正在尝试使用整数值创建我的记录:column "ticked" is of type boolean but expression is of type integer
。
然而,这对我的同事环境非常好。我首先想到的是,因为我没有在psql上一个版本上运行,但我将psql更新到10.1版本,我仍然有这个问题。
我们使用sqlalchemy生成表格。这是与有问题的列相关的模型:
1
你知道为什么psql不接受布尔字段的0或1值吗?
答案 0 :(得分:1)
你需要正确地施放它们:
t=# select 1::boolean, 0::boolean;
bool | bool
------+------
t | f
(1 row)
或SQL兼容:
t=# select cast (1 as boolean), cast (0 as boolean);
bool | bool
------+------
t | f
(1 row)
或其他postgres具体:
t=# select boolean '1', boolean '0';
bool | bool
------+------
t | f
(1 row)
还有默认的文本转换为布尔值:
t=# create table b(v boolean);
CREATE TABLE
t=# insert into b values ('0');
INSERT 0 1
t=# select * from b;
v
---
f
(1 row)
答案 1 :(得分:0)
实际上这不是psql的版本问题,而是我的sqlAlchemy版本。我是1.1.13,现在我升级到1.2.1我不再有错误了