是否有整合的好方法hstore有simple_form?
我只是找不到实现这个目标的方法.我有一个调用的列widget_locations,我想将:left_area1, :mid_area1, :left_area2, :mid_area2, :right_area2键和值存储为嵌套的哈希,所以它们如下所示:
{:left_area1 => {:video_id => 1, :presentation_id => 3}, :mid_area1 => {:chat_id => 1, :presentation_id => 5}, :left_area2, :mid_area2, :right_area2}
Run Code Online (Sandbox Code Playgroud)
有没有一种在simple_form中实现这一目标的最佳方法?
在SQL Server中是否有相当于Postgresql的hstore?我正在使用Web应用程序运行SQL Server 2008,该应用程序对数据库上的稀疏键/值配对的需求越来越大.在我们的情况下,每次发生这种情况时都不可能创建新列.目前,我们使用标准列并将所有这些"无模式"稀疏数据抛出到单个列中,然后在应用程序中运行检查以获取所需的密钥.这不是很干净/优雅.
我刚刚开始研究另一个使用Postgresql的项目,并使用hstore来解决一个非常类似的问题.对于我们遇到的问题,hstore是一个更清晰的解决方案,所以现在我想知道SQL Server 2008中是否有相同的功能?
我正在使用带有hstore扩展的PostgreSQL数据库,我正在努力使最简单的事情成为可能 - 获取所有记录,哪一vd_data (hstore)列是空的({}).
这听起来很容易,但我不能自己做,也没有在互联网上找到任何关于它的东西.我在我的rails应用程序中使用它,所以我将使用activerecord DSL发布一些示例:
Video.where('vd_data != NULL')
# => [] (empty result. I have about 20 videos with vd_data populated in my db)
Video.where('vd_data != {}')
# => Syntax error
Video.where('vd_data != ""')
# => ERROR: zero-length delimited identifier at or near """"
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我这样的查询应该在纯SQL中看起来如何?
假设我有一个Hibernate/JPA实体,如下所示:
@Entity
public class FooEntity {
...
@Type(type = "hstore")
HashMap<String, String> tags;
}
Run Code Online (Sandbox Code Playgroud)
...而hstoreType是此资源的简单UserType实现.
有没有办法在类似于这个Pseudocode的JPQL查询中访问hstore:
SELECT f FROM FooEntity f WHERE f.tags CONTAINS KEY(:key)
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个迁移以将现有 hstore 列转换为 JSON(不是 JSONB)。
我尝试了不同的解决方案json USING cast(hstore_column as json),在 github 上找到了一些功能,但没有真正解决问题。
主要问题是没有直接转换,其次是即使我将列转换为文本作为中间步骤,我也需要将默认列值更改为 json。
有人已经这样做了吗?
在Rails 3.2应用程序中使用Postgresql 9.2中的hstore时,我在调试测试数据库时遇到如下错误:
PG ::错误:错误:类型"hstore"不存在
由于它是从schema构建的,因此测试数据库没有经过开发数据库的hstore CREATE EXTENSION迁移.这导致了rake db:test:prepare上的错误.
如何解决这个问题?我实际上发现了一个修复,很高兴听到更多.
我正在使用带有flask-sqlachemy 扩展的flask。
正在尝试搜索具有特定值的 hstore 键的所有记录。
以下是该列的设置:
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import HSTORE
from sqlalchemy.ext.mutable import MutableDict
db = SQLAlchemy()
class BookDB(db.Model):
attributes = db.Column(MutableDict.as_mutable(HSTORE), nullable=False, default={ 'disabled' : '0'}, index=True)
Run Code Online (Sandbox Code Playgroud)
这是我正在运行的查询:
results = BookDB.query.filter_by(attributes={ 'disabled' : '0' }).all()
Run Code Online (Sandbox Code Playgroud)
这没有错误,但没有发现任何结果。
如果我做:
results = BookDB.query.filter_by(attributes['disabled']='0').all()
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:“语法错误:关键字不能是表达式”
如果我使用 filter() 而不是 filter_by(),我可以做到
results = BookDB.query.filter(BookDB.attributes['disabled']=='0').all()
Run Code Online (Sandbox Code Playgroud)
这工作正常并产生正确的结果。
但是它与 filter_by() 一起使用的语法是什么?
我有一个比较两hstore列的视图.
当我转储和还原此数据库时,还原失败并显示以下错误消息:
Importing /tmp/hstore_test_2014-05-12.backup...
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 172; 1259 1358132 VIEW hstore_test_view xxxx
pg_restore: [archiver (db)] could not execute query: ERROR: operator does not exist: public.hstore = public.hstore
LINE 2: SELECT NULLIF(hstore_test_table.column1, hstore_test_table....
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Command was: CREATE VIEW hstore_test_view AS
SELECT NULLIF(hstore_test_table.column1, hstore_test_table.column2) AS "nullif"
FROM hst...
pg_restore: [archiver …Run Code Online (Sandbox Code Playgroud) 我只是为一个需要本地化支持的新项目建模PostgreSQL数据库.我想知道hstore是否可能是本地化某些数据字段的好方法.
例如:让我们为带有字段post_title和的博客文章采用简化的表格post_content.使用键值类型hstore,可以向这些字段添加多个翻译,使用语言代码作为键标识:
id | post_title (hstore) | post_content (hstore)
---|-----------------------|------------------------------
1 | "en" => "Hello World",| "en" => "Content in english",
| "de" => "Hallo Welt" | "de" => "Inhalt auf deutsch"
---|-----------------------|------------------------------
2 | ... | ...
Run Code Online (Sandbox Code Playgroud)
有没有人有这种方法的经验?它似乎非常灵活且易于使用,但也许我在这里缺少一些明显的缺点?
我正在运行postgresql-9.5.3,我尝试创建扩展:
CREATE EXTENSION IF NOT EXISTS hstore;
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
无法打开扩展控制文件"/usr/share/pgsql/extension/hstore.control":没有这样的文件或目录
我该如何安装hstore?
hstore ×10
postgresql ×8
activerecord ×1
flask ×1
hibernate ×1
java ×1
jpa ×1
json ×1
pg ×1
pg-restore ×1
python ×1
ruby ×1
simple-form ×1
sql-server ×1
sqlalchemy ×1