小编Clo*_*eto的帖子

python将"E"添加到字符串

这个字符串:

"CREATE USER %s PASSWORD %s", (user, pw)
Run Code Online (Sandbox Code Playgroud)

总是扩大到:

CREATE USER E'someuser' PASSWORD E'somepassword'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么?

编辑:上面的扩展字符串是我的数据库在错误消息中返回的字符串.我正在使用psycopg2来访问我的postgres数据库.真正的代码如下所示:

conn=psycopg2.connect(user=adminuser, password=adminpass, host=host)
cur = conn.cursor()

#user and pw are simple standard python strings the function gets as parameter
cur.execute("CREATE USER %s PASSWORD %s", (user, pw))
conn.commit()
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg

15
推荐指数
3
解决办法
5816
查看次数

id在postgresql中有多大

我正在使用postgresql,并想知道有多大

id INTEGER PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)

可以得到比较

id SERIAL PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)

在java中,a int是4个字节(32位),因此它可以达到2,147,483,647.在postgresql中是这种情况吗?如果是这样意味着我不能超过2,147,483,647行?

postgresql integer primary-key

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

如何在PostgreSQL中进行透视

我是PostgreSQL的新手.

假设我有一张桌子

colorname   Hexa    rgb rgbvalue
Violet  #8B00FF r   139
Violet  #8B00FF g   0
Violet  #8B00FF b   255
Indigo  #4B0082 r   75
Indigo  #4B0082 g   0
Indigo  #4B0082 b   130
Blue    #0000FF r   0
Blue    #0000FF g   0
Blue    #0000FF b   255
Run Code Online (Sandbox Code Playgroud)

如果我在SQL Server中做一个Pivot

SELECT colorname,hexa,[r], [g], [b]
FROM
(SELECT colorname,hexa,rgb,rgbvalue
    FROM tblPivot) AS TableToBePivoted
PIVOT
(
sum(rgbvalue)
FOR rgb IN ([r], [g], [b])
) AS PivotedTable;
Run Code Online (Sandbox Code Playgroud)

我把输出作为

colorname   hexa    r   g   b
Blue    #0000FF 0   0   255
Indigo  #4B0082 …
Run Code Online (Sandbox Code Playgroud)

postgresql pivot postgresql-9.1

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

随机排序的行可重复分页

我有API从DB返回圆顶分页行.它工作正常,但是当我按行排序时,RANDOM()我会在连续的页面上重复.是否有任何选项可以为每个查询设置随机种子?

如果不是可以全局设置随机SEED以强制RANDOM()为每个查询生成相同的值?然后我可以每隔3分钟改变全局随机或类似的东西......


你用这个代码:

SELECT * FROM "table" ORDER BY RANDOM() OFFSET 5 LIMIT 5
Run Code Online (Sandbox Code Playgroud)

现在我想传递种子到这个查询,所以我可以分页随机结果.我应该这样做?:

SELECT "table".*, SETSEED(0.1) FROM "table" ORDER BY RANDOM() OFFSET 5 LIMIT 5
SELECT "table".*, SETSEED(0.1) FROM "table" ORDER BY RANDOM() OFFSET 10 LIMIT 5
Run Code Online (Sandbox Code Playgroud)

结果将正确分页?

random postgresql pagination random-seed

12
推荐指数
3
解决办法
2057
查看次数

为select - Postgres中的每一行调用一个函数

我有一个名为"getList(date)"的函数.此函数从参数中输入的日期返回一个项目列表(包含多列).

如果我打电话:

SELECT * FROM getList('12/31/2014');
Run Code Online (Sandbox Code Playgroud)

它工作正常.它返回一个包含日期,项目名称和价格的列表.

像这样的东西:

date        item_description    price
-----------------------------------------------
12/31/2014      banana          1
12/31/2014      apple           2.5
12/31/2014      coconut         3
Run Code Online (Sandbox Code Playgroud)

但我有另一张表格,其中包含我想要搜索的日期.

所以,我想从该表中选择所有日期,并且对于返回的每一行,我想调用我的函数"getList"来得到如下结果:

 date       item_description    price
 -----------------------------------------------
 12/28/2014     banana          0.5
 12/28/2014     apple           1.5
 12/28/2014     coconut         2
 12/31/2014     banana          1
 12/31/2014     apple           2.5
 12/31/2014     coconut         3
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做.当然,我的数据不是水果清单.这只是为了解释整个事情更容易.

非常感谢你.

postgresql function postgresql-9.2

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

如何在一对多关系中复制另一个表的外键

我有三个表结构:tournament,groupteam.所述tournamentgroup表具有一个一对多关系,groupteam具有一个对多关系如下所示.

表结构

我如何复制的价值tournament_id,从group表到group_tournament_idteam表?

我正在寻找一个使用create语句来实现这个目标的答案

create table team (
    id serial primary key, 
    group_id int references group, 
    group_tournament_id int references group(tournament_id)
);
Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为为了引用它必须是唯一的东西,在这种情况下,tournament_id不是唯一的

当我插入团队时,我需要一种标准的方法来将tournament_idfrom 的值复制group到'team'表中group_tournament_idgroup_id insidetable

编辑:不再需要在symfony中回答,只需postgreSQL即可

postgresql database-design one-to-many table-relationships postgresql-9.6

12
推荐指数
1
解决办法
646
查看次数

Postgres函数与list参数和in子句

如何创建一个函数,该函数使用参数integer []参数并使用IN子句在循环中使用此参数执行查询.在循环中我想要执行下一个选择和我希望返回的此查询的结果.

像这样的东西:

CREATE OR REPLACE FUNCTION function_which_i_want(my_argument integer[]) RETURNS my_schema_and_table[] AS
$BODY$
DECLARE
result my_schema_and_table[];
BEGIN
FOR l IN SELECT * FROM table2 WHERE id in (my_argument) LOOP
SELECT * FROM my_schema_and_table;
END LOOP;
END;
...
Run Code Online (Sandbox Code Playgroud)

我希望得到每个select循环的联合.一个巨大的联合结果.这可能吗?请帮忙.

sql postgresql function plpgsql

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

null的计算结果为false

今天我对这种case行为感到惊讶:

select case when null then true else false end;
 case 
------
 f
Run Code Online (Sandbox Code Playgroud)

我希望它返回,null因为一个null铸造到布尔的yelds a null而不是false:

select null::boolean is null;
 ?column? 
----------
 t
Run Code Online (Sandbox Code Playgroud)

有关这种行为的理由的任何评论?我错过了什么?

postgresql

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

如何使用GROUP BY子句为json聚合结果设置正确的属性名称?

我有一个temp像这样定义的表:

id |  name  |  body  | group_id
-------------------------------
1  | test_1 | body_1 | 1
2  | test_2 | body_2 | 1
3  | test_3 | body_3 | 2
4  | test_4 | body_4 | 2
Run Code Online (Sandbox Code Playgroud)

我想生成一个按group_idjson 分组并汇总的结果.但是,查询如下:

SELECT group_id, json_agg(ROW(id, name, body)) FROM temp
GROUP BY group_id;
Run Code Online (Sandbox Code Playgroud)

产生这个结果:

1;[{"f1":1,"f2":"test_1","f3":"body_1"}, 
   {"f1":2,"f2":"test_2","f3":"body_2"}]
2;[{"f1":3,"f2":"test_3","f3":"body_3"}, 
   {"f1":4,"f2":"test_4","f3":"body_4"}]
Run Code Online (Sandbox Code Playgroud)

在JSON对象的属性被命名为f1,f2,f3而不是id,name,body按要求.我知道可以通过使用子查询或公用表表达式来正确地对它们进行别名,例如:

SELECT json_agg(r.*) FROM (
  SELECT id, name, body FROM …
Run Code Online (Sandbox Code Playgroud)

postgresql json types aggregate-functions postgresql-9.3

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

通过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
查看次数