当我尝试运行命令时: import psycopg2 我得到的错误: ImportError: dlopen(/Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib Referenced from: /Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so Reason: image not found 到目前为止,我已经尝试brew install openssl并引用(没有运气): psycopg2安装错误 – 库未加载:libssl.dylib http://joshuakehn.com/2013/10/13/Postgresapp-and-psycopg2-on-OS-X.html 没有findPsycopg2图片
有没有简单的方法来列出PostgreSQL数据库中的所有表格,并按大小sorting? 伪代码 SELECT * FROM tables ORDER by tables.size 我正在使用PostgreSQL 9.3.2 。
我有一个PostgreSQL 9.3数据库的实体化视图,很less发生变化(大约每天两次)。 但是当它发生时,我想立即更新它的数据。 以下是我到目前为止的想法: 有一个物化视图mat_view ,它使用一些join语句从表table1和table2获取数据。 每当table1或table2东西发生变化,我已经有一个触发器,更新一个小的configuration表config组成 table_name | mat_view_name | need_update ———–+—————+———— table1 | mat_view | TRUE/FALSE table2 | mat_view | TRUE/FALSE 因此,如果table1任何内容发生更改(每个语句都有UPDATE和DELETE上的触发器),则第一行中的need_update字段将设置为TRUE 。 table2和第二行也是一样的。 显然,如果need_update为TRUE,则物化视图必须刷新。 更新 :由于物化视图不支持规则(如下面评论中提到的@pozs),我会更进一步。 我会创build一个虚拟视图v_mat_view定义“ SELECT * FROM mat_view ”。 当用户在这个视图上做一个SELECT时,我需要创build一个规则ON SELECT,它执行以下操作: 检查mat_view是否应该更新( SELECT 1 FROM config WHERE mat_view_name='mat_view' AND need_update=TRUE ) 用UPDATE config SET need_update=FALSE where mat_view_name='mat_view'重置need_update标志UPDATE config SET […]
我通过HomeBrew安装了postgresql 。 它的工作,但今天我发现,计算机启动时, postgresql服务器不运行。 我尝试使用下面的命令再次使用launchctl加载它: $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 我看到这个消息: /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist: Service is disabled 我不知道如何启用postgresql服务。 任何人都可以告诉我?
我有一张桌子来存储关于我的兔子的信息。 它看起来像这样: create table rabbits (rabbit_id bigserial primary key, info json not null); insert into rabbits (info) values ('{"name":"Henry", "food":["lettuce","carrots"]}'), ('{"name":"Herald","food":["carrots","zucchini"]}'), ('{"name":"Helen", "food":["lettuce","cheese"]}'); 我应该如何find喜欢胡萝卜的兔子? 我想出了这个: select info->>'name' from rabbits where exists ( select 1 from json_array_elements(info->'food') as food where food::text = '"carrots"' ); 我不喜欢那个查询。 一团糟。 作为一个全职的兔子守门员,我没有时间去改变我的数据库模式。 我只是想适当地喂我的兔子。 有一个更可读的方式来做这个查询吗?
我最近一直在玩Docker和QGIS,并按照本教程中的说明安装了一个容器。 尽pipe我无法连接到包含我所有GIS数据的localhost postgres数据库,但一切正常。 我认为这是因为我的postgres数据库没有configuration为接受远程连接,并已编辑postgresconfiguration文件,以允许使用本文中的说明进行远程连接。 当我尝试连接到在Docker中运行QGIS的数据库时,仍然收到错误消息:无法连接到服务器: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections to port 5433? postgres服务器正在运行,我编辑了我的pg_hba.conf文件,允许来自一系列IP地址(172.17.0.0/32)的连接。 我以前使用docker ps查询了docker容器的IP地址,尽pipeIP地址发生了变化,但它一直在172.17.0.x 任何想法,为什么我不能连接到这个数据库? 可能是我想象的很简单的东西! 我正在运行Ubuntu 14.04; Postgres 9.3
在PostgreSQL 9.3 Beta 2(?)中,如何在JSON字段上创build索引? 我尝试使用用于hstore的->运算符,但得到以下错误: CREATE TABLE publishers(id INT, info JSON); CREATE INDEX ON publishers((info->'name')); 错误:数据typesjson没有访问方法“btree”的默认操作符类提示:您必须为索引指定操作符类或为数据types定义默认操作符类。
我很惊讶,这还没有发布。 你在Postgres知道的任何有趣的技巧? 晦涩的configuration选项和缩放/性能特技是特别受欢迎的。 我敢肯定,我们可以击败相应的MySQL线程上的9条评论:)
表 :table_name create table table_name ( given_dates timestamp, set_name varchar ); 插入logging : insert into table_name values('2001-01-01'),('2001-01-05'),('2001-01-10'), ('2001-01-15'),('2001-01-20'),('2001-01-25'), ('2001-02-01'),('2001-02-05'),('2001-02-10'), ('2001-02-15'); 现在我想更新一些date的set_name。 例如 : 我想要这样更新表格: given_dates set_name ———————- 2001-01-01 s1 2001-01-05 s1 2001-01-10 s2 2001-01-15 s2 2001-01-20 2001-01-25 2001-02-01 2001-02-05 2001-02-10 2001-02-15 注意 : given_dates和set_name是传递参数,因为它们是dynamic的。 我可以按照上面s1,s2通过2台s1,s2也可以按要求通过4台。 所以我需要dynamic的case语句来更新set_name 。 给定两个参数 : declare p_dates varchar := '2001-01-01to2001-01-05,2001-01-10to2001-01-15'; declare […]
使用postgresql 9.3我可以selectJSON数据types的特定字段,但是如何使用UPDATE修改它们呢? 我无法在postgresql文档或在线任何地方find这个例子。 我已经尝试了显而易见的: postgres=# create table test (data json); CREATE TABLE postgres=# insert into test (data) values ('{"a":1,"b":2}'); INSERT 0 1 postgres=# select data->'a' from test where data->>'b' = '2'; ?column? ———- 1 (1 row) postgres=# update test set data->'a' = to_json(5) where data->>'b' = '2'; ERROR: syntax error at or near "->" LINE […]