小编Ish*_*war的帖子

Alembic:如何向现有列添加唯一约束

我有一个表'test',其列'Name'没有约束.ALTER通过给它一个UNIQUE约束我需要这个专栏.我该怎么办?

我应该使用op.alter_column('???')create_unique_constraint('???')?新列不是create_unique_constraint而不是现有列吗?

sqlalchemy flask-sqlalchemy alembic

24
推荐指数
1
解决办法
1万
查看次数

如何将文本完全转换为jsonb for postgresql列

我所拥有的是Postgresql中的一个文本列,我想将其转换为JSONB列.

我试过的是这个:

  1. CREATE TABLE test (id serial, sec text, name text);
  2. INSERT INTO test (id, sec, name) VALUES (1,'{"gender":"male","sections":{"a":1,"b":2}}','subject');
  3. ALTER TABLE test ALTER COLUMN sec TYPE JSONB USING sec::JSONB;

这确实将文本列转换为jsonb.

但是,如果我尝试查询:

 SELECT sec->>'sections'->>'a' FROM test
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.

我看到转换仅在一个级别完成(即:sec - >>'sections'正常工作).

该查询SELECT pg_typeof(name->>'sections') from test;将列类型作为文本.

有没有办法可以将文本完全转换为jsonb,以便我可以SELECT sec->>'sections'->>'a' FROM test;成功查询?

我不想在下面的查询中将文本转换为json,因为我需要稍后在'a'上创建索引.

select (sec->>'sections')::json->>'a' from test;
Run Code Online (Sandbox Code Playgroud)

postgresql json jsonb postgresql-9.4

4
推荐指数
1
解决办法
2470
查看次数