如何通过 Sequel 检索存储在 postgresql 中的数组作为数组?
How can I retrieve an array stored in postgresql via Sequel as an array?
我有一个 ruby 脚本,一个 postgres 数据库,我使用 Sequel gem 连接到数据库。
我想存储和检索记录,其中一些列值是数组(数据类型设置为 text[]
)。因此,我为 sequel.
加载 pg_array
扩展
我创建了一个散列{id: 1, key1: Sequel.pg_array(["lorem ipsum", "caesar", "quidquid id est, timeo danaos"])}
我可以通过 table.insert hash
插入哈希并创建正确的记录。
id | key1
----+--------------------------------------------------------
1 | {"lorem ipsum",caesar,"quidquid id est, timeo danaos"}
根据这个有利的结果,我推断 database
、sequel gem
和 pg_array
扩展都已正确设置。
但是,当我再次使用 advisers.where(id: 1).all
通过 sequel
检索记录时,我得到了这个
[{:id => 1, :key1 => "{\"lorem ipsum\",caesar,\"quidquid id est, timeo danaos\"}"}]
:key1
的值返回为 String
。我无法对文档做出正面或反面的说明。有没有人有办法将它直接转回它开始的数组:["lorem ipsum", "caesar", "quidquid id est, timeo danaos"]
?
非常感谢新手
选中 this,在您的模型中添加以下内容
serialize :key1, Array
这通常在您将 pg_array
扩展加载到您的 Sequel::Database
实例时处理。也许您只是加载了 pg_array
扩展文件,而没有将其加载到您的 Sequel::Database
实例中。你可能做过:
Sequel.extension :pg_array
而不是:
DB.extension :pg_array
您需要将 pg_array
扩展加载到您的 Sequel::Database
实例中,以便检索的值是 array-like 对象而不是字符串。
我有一个 ruby 脚本,一个 postgres 数据库,我使用 Sequel gem 连接到数据库。
我想存储和检索记录,其中一些列值是数组(数据类型设置为 text[]
)。因此,我为 sequel.
pg_array
扩展
我创建了一个散列{id: 1, key1: Sequel.pg_array(["lorem ipsum", "caesar", "quidquid id est, timeo danaos"])}
我可以通过 table.insert hash
插入哈希并创建正确的记录。
id | key1
----+--------------------------------------------------------
1 | {"lorem ipsum",caesar,"quidquid id est, timeo danaos"}
根据这个有利的结果,我推断 database
、sequel gem
和 pg_array
扩展都已正确设置。
但是,当我再次使用 advisers.where(id: 1).all
通过 sequel
检索记录时,我得到了这个
[{:id => 1, :key1 => "{\"lorem ipsum\",caesar,\"quidquid id est, timeo danaos\"}"}]
:key1
的值返回为 String
。我无法对文档做出正面或反面的说明。有没有人有办法将它直接转回它开始的数组:["lorem ipsum", "caesar", "quidquid id est, timeo danaos"]
?
非常感谢新手
选中 this,在您的模型中添加以下内容
serialize :key1, Array
这通常在您将 pg_array
扩展加载到您的 Sequel::Database
实例时处理。也许您只是加载了 pg_array
扩展文件,而没有将其加载到您的 Sequel::Database
实例中。你可能做过:
Sequel.extension :pg_array
而不是:
DB.extension :pg_array
您需要将 pg_array
扩展加载到您的 Sequel::Database
实例中,以便检索的值是 array-like 对象而不是字符串。