小编Tom*_*ico的帖子

通过psycopg2获取警告消息

我想通过psycopg2调用plpgsql函数并查看警告消息.即,我有这个功能:

create or replace function test_warning() returns void as $$
begin
raise warning 'this is only a test';
end; 
$$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)

并在python中调用它:

import psycopg2
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.callproc("test_warning")
# or so:
cursor.execute('SELECT test_warning()')
Run Code Online (Sandbox Code Playgroud)

不幸的是,plpgsql中定义的警告消息不会出现在python输出中的任何位置.有没有办法在python输出中打印警告消息?

python postgresql psycopg2

11
推荐指数
2
解决办法
3615
查看次数

在 PostgreSql 中计算百分比

例如,我有一个这样的表:

string adm
A       2
A       1
B       2
A       1
C       1
A       2
Run Code Online (Sandbox Code Playgroud)

通过 SQL 查询,我想要这样的东西:

string    perc_adm (%)
A            50
B            100
C            0
Run Code Online (Sandbox Code Playgroud)

我想要每个字符串中第 2 次出现的百分比。我可以在不同的条件下获得它,但我只需要一个条件。我也有一些除以零错误。在这种情况下我该如何纠正?

sql postgresql

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

无法更改maven本地存储库路径

我正在尝试更改本地maven存储库的路径,但总是当我重新启动intellij idea时,该路径会自动重置为值“/data/m2repository”: 在此输入图像描述

我是否已经尝试过:

  • 直接在文件 ~/.IntelliJIdea14/system/Maven/Indices/Index0/index.properties 中更改路径

  • 更改intellij系统配置中的路径变量MAVEN_REPOSITORY

如何永久更改此路径?我在 Ubuntu 14.04 上使用 Intellij Idea 14.0.2

intellij-idea maven

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

在 postgresql 中找到偶数和普通系列

这可能很幼稚,但我想知道有什么方法可以找到具有偶数条目和奇数条目的行。我有这种格式的数据

"41,43,45,49,35,39,47,37"
"12,14,18,16,20,24,22,10"
"1,2,3,4,5,6"
"1,7,521,65,32"
Run Code Online (Sandbox Code Playgroud)

我曾尝试将这些值与 Id 列分开,然后使用 Even 和 Odd 函数读取它们,但这太花时间了。是否有查询或函数通过我可以找出哪些行是偶数、奇数序列和任意行?

提前致谢。

postgresql numeric

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

如何在postGIS中存储道路地图?

如何将OSM路线图导出到postGIS数据库?此外,如果我有交叉路口的坐标,我可以得到我需要的路段吗?

任何帮助,将不胜感激.谢谢!

gis postgresql postgis openstreetmap

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

不使用密码和不使用 sudo -u postgres 运行 psql 和 pg_dump

我正在尝试将一个表从一个数据库复制到另一个:

sudo -u postgres pg_dump -t _stats db30 | psql db8;
Run Code Online (Sandbox Code Playgroud)

但是,我总是被要求输入密码,而我不知道它是什么。有没有办法在没有 pg_dump 的情况下做到这一点?有没有办法让我在运行时不会被要求输入密码psql

注意,要进入 postgres,我必须运行sudo -u postgres psql而不是 psql

database postgresql

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

触发器更新另一个表

一段时间以来,我一直在尝试编写一个触发器函数,该函数在父表更改时更新子表中的行。我已经阅读了 Trigger procedure 文档,但我还没有真正掌握如何构建这些函数。

这是我尝试过但不起作用的方法...

CREATE FUNCTION myschema.update_child() RETURNS trigger AS
$BODY$
BEGIN
UPDATE myschema.child 
set new.number = parent.number 
FROM myschema.parent
WHERE id = "id";
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)

然后触发

CREATE TRIGGER update_child_after_update
   AFTER INSERT OR UPDATE OR DELETE
   ON myschema.child
   FOR EACH ROW
   EXECUTE PROCEDURE myschema.update_child();
Run Code Online (Sandbox Code Playgroud)

有没有人有一些提示?
此致

postgresql triggers plpgsql

3
推荐指数
1
解决办法
6507
查看次数

如何加快使用 postgis 扩展的查询?

我有以下查询来检查点(T.latitude, T.longitude)是否在 a 内POLYGON

query = """
  SELECT id
  FROM T
  WHERE ST_Intersects(ST_Point(T.latitude, T.longitude), 'POLYGON(({points}))')
"""
Run Code Online (Sandbox Code Playgroud)

但它工作缓慢,如果我有以下索引,我该如何加快速度: (latitude, longitude)

查询很慢,因为它必须为每对可能的点计算公式。所以它让 postgress 服务器做很多数学运算,并强制它扫描你的整个位置表。我们如何优化它?也许我们可以消除太北或太南或太远东或西的点?

database algorithm postgresql performance postgis

3
推荐指数
1
解决办法
903
查看次数

创建引用不存在的表或列的SQL函数(尚)

我想通过psql在空数据库中加载一些SQL函数:

psql -d my_database -f fuctions.sql --set ON_ERROR_STOP=1 
Run Code Online (Sandbox Code Playgroud)

我使用--set ON_ERROR_STOP=1是因为如果脚本包含错误,我希望psql失败.

内容functions.sql是:

CREATE or REPLACE FUNCTION test_function() RETURNS INT AS $$
  SELECT id from test_table;
$$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)

我的问题是,psql检查test_table加载函数时是否存在并因此错误而失败:

ERROR:  relation "test_table" does not exist LINE 2: SELECT id from test_table;
Run Code Online (Sandbox Code Playgroud)

但我不希望psql检查表是否存在,因为我稍后会创建此表.

以下解决方法可行,但我无法使用它们:

  • 忽略错误.如果脚本包含ie sql语法错误,我希望psql退出时出错.
  • 使用plpgsql函数而不是sql.我当然可以,但简单的sql函数往往是最好的选择.
  • 首先创建表.我的真实场景实际上比这个例子更复杂.

postgresql plpgsql sql-function psql

2
推荐指数
1
解决办法
1653
查看次数

使用 Overpass QL 获取行政边界

我尝试下载法国的州界(几十个州,不是大数据)。事实上,我寻找可以上传到我的 postgres 数据库中的边界来本地化 POI。OpenstreetMap 似乎是一个很好的数据源,所以我试图学习 Overpass QL,但它似乎比我想象的要难......在阅读了一些 wiki 之后,我来到了这个:

way["name:en"="France"];
way["type"="boundary"];
way["boundary"="administrative"];
way["admin_level"="4"];
Run Code Online (Sandbox Code Playgroud)

但是查询无休止地运行......我不确定我所做的查询,这是好的语法吗?谢谢

postgresql postgis openstreetmap overpass-api

2
推荐指数
1
解决办法
2902
查看次数