这个字符串:
"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) 我正在使用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的新手.
假设我有一张桌子
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) 我有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)
结果将正确分页?
我有一个名为"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)
我不知道该怎么做.当然,我的数据不是水果清单.这只是为了解释整个事情更容易.
非常感谢你.
我有三个表结构:tournament
,group
和team
.所述tournament
和group
表具有一个一对多关系,group
并team
具有一个对多关系如下所示.
我如何复制的价值tournament_id
,从group
表到group_tournament_id
的team
表?
我正在寻找一个使用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_id
from 的值复制group
到'team'表中group_tournament_id
group_id inside
table
编辑:不再需要在symfony中回答,只需postgreSQL即可
postgresql database-design one-to-many table-relationships postgresql-9.6
如何创建一个函数,该函数使用参数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循环的联合.一个巨大的联合结果.这可能吗?请帮忙.
今天我对这种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)
有关这种行为的理由的任何评论?我错过了什么?
我有一个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_id
json 分组并汇总的结果.但是,查询如下:
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) 我想通过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输出中打印警告消息?
postgresql ×10
function ×2
python ×2
integer ×1
json ×1
one-to-many ×1
pagination ×1
pivot ×1
plpgsql ×1
primary-key ×1
psycopg ×1
psycopg2 ×1
random ×1
random-seed ×1
sql ×1
types ×1