我想通过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输出中打印警告消息?
例如,我有一个这样的表:
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 次出现的百分比。我可以在不同的条件下获得它,但我只需要一个条件。我也有一些除以零错误。在这种情况下我该如何纠正?
我正在尝试更改本地maven存储库的路径,但总是当我重新启动intellij idea时,该路径会自动重置为值“/data/m2repository”:
我是否已经尝试过:
直接在文件 ~/.IntelliJIdea14/system/Maven/Indices/Index0/index.properties 中更改路径
更改intellij系统配置中的路径变量MAVEN_REPOSITORY
如何永久更改此路径?我在 Ubuntu 14.04 上使用 Intellij Idea 14.0.2
这可能很幼稚,但我想知道有什么方法可以找到具有偶数条目和奇数条目的行。我有这种格式的数据
"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 函数读取它们,但这太花时间了。是否有查询或函数通过我可以找出哪些行是偶数、奇数序列和任意行?
提前致谢。
如何将OSM路线图导出到postGIS数据库?此外,如果我有交叉路口的坐标,我可以得到我需要的路段吗?
任何帮助,将不胜感激.谢谢!
我正在尝试将一个表从一个数据库复制到另一个:
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
一段时间以来,我一直在尝试编写一个触发器函数,该函数在父表更改时更新子表中的行。我已经阅读了 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)
有没有人有一些提示?
此致
我有以下查询来检查点(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 服务器做很多数学运算,并强制它扫描你的整个位置表。我们如何优化它?也许我们可以消除太北或太南或太远东或西的点?
我想通过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
加载函数时是否存在并因此错误而失败:
Run Code Online (Sandbox Code Playgroud)ERROR: relation "test_table" does not exist LINE 2: SELECT id from test_table;
但我不希望psql检查表是否存在,因为我稍后会创建此表.
以下解决方法可行,但我无法使用它们:
我尝试下载法国的州界(几十个州,不是大数据)。事实上,我寻找可以上传到我的 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 ×9
postgis ×3
database ×2
plpgsql ×2
algorithm ×1
gis ×1
maven ×1
numeric ×1
overpass-api ×1
performance ×1
psql ×1
psycopg2 ×1
python ×1
sql ×1
sql-function ×1
triggers ×1