小编Dan*_*lor的帖子

Postgres SELECT ... FOR UPDATE in functions

关于在Postgres函数中使用SELECT ... FOR UPDATE行级锁定,我有两个问题:

  • 我选择哪一列是否重要?他们与我需要锁定然后更新的数据有什么关系吗?

    SELECT * FROM table WHERE x=y FOR UPDATE;
    
    Run Code Online (Sandbox Code Playgroud)

    VS

    SELECT 1 FROM table WHERE x=y FOR UPDATE;
    
    Run Code Online (Sandbox Code Playgroud)
  • 我不能在没有保存数据的情况下在函数中进行选择,所以我保存为虚拟变量.这似乎是hacky; 这是正确的做事方式吗?

这是我的功能:

CREATE OR REPLACE FUNCTION update_message(v_1 INTEGER, v_timestamp INTEGER, v_version INTEGER)
RETURNS void AS $$
DECLARE
    v_timestamp_conv TIMESTAMP;
    dummy INTEGER;
BEGIN
    SELECT timestamp 'epoch' + v_timestamp * interval '1 second' INTO v_timestamp_conv;
    SELECT 1 INTO dummy FROM my_table WHERE userid=v_1 LIMIT 1 FOR UPDATE;
    UPDATE my_table SET (timestamp) = (v_timestamp_conv) WHERE userid=v_1 AND version < v_version; …
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql postgresql-9.1 select-for-update

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

从Django模型中获取单个字段的过滤值列表

我正在尝试获取Django模型中某个字段的值列表.

我可以做以下事情:

MyObject.objects.filter(name='Mike').values_list('address')
Run Code Online (Sandbox Code Playgroud)

但是这给了我一个元组列表,每个元素都包含一个元素,然后我需要转换为一个列表.

有没有更好的办法?

python django

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