Postgresql布尔字段不接受0或1作为有效条目

时间:2018-01-18 10:18:11

标签: sql postgresql flask boolean flask-sqlalchemy

我为一个烧瓶项目设置了一个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值吗?

2 个答案:

答案 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我不再有错误了