小编RAF*_*FIQ的帖子

在postgres中打印运行时消息

我们可以RAISE NOTICE在postgres中使用等同于SQL Server中的RAISERROR"显示消息" WITH NOWAIT,还是有更好的方法在postgres查询运行时打印中间消息?请建议是否有更好的方法在postgres中打印运行时消息.

INSERT INTO tbl1 (col1) values (val1);
DO $$
begin
raise notice 'insert tbl1 done!';
end;
$$;
UPDATE tbl2 set col2='val2' where ...;
DO $$
begin
raise notice 'update tbl2 done!';
end;
$$;
Run Code Online (Sandbox Code Playgroud)

我很抱歉,如果这段代码太难以评论,请建议一个更好的方法来做,谢谢

sql sql-server postgresql

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

EXECUTE格式()中整数变量的格式说明符?

CREATE OR REPLACE FUNCTION getParentLtree(parent_id bigint, tbl_name varchar) 
  RETURNS ltree AS
$BODY$
DECLARE
   parent_ltree ltree;
BEGIN
-- This works fine:
-- select into parent_ltree l_tree from tbl1 where id = parent_id;

EXECUTE format('select into parent_ltree l_tree from %I
                where id = %I', tbl_name,parent_id);

RETURN parent_ltree;
END;
$BODY$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

上述功能有2个问题:

  1. parent_id是integer,但它会被替换引号?int变量的正确格式说明符是什么?
  2. select into不起作用EXECUTE?如何使上面的注释查询使用表名传递?

postgresql string-concatenation dynamic-sql plpgsql

6
推荐指数
2
解决办法
7021
查看次数

start_new_thread后加入线程

当我单独运行下面的函数时,它会在 3 秒后退出,但是当我在线程中调用它时,它永远不会退出。请建议这段代码有什么问题。

def display(val1, val2):

    root =  Tk()
    clock = Label(root, font=('times', 20, 'bold'), bg='white')
    clock.pack(fill=BOTH, expand=0)
    def tick():
        time1 = val1 +'\n' + val2
        clock.config(text=time1)
    tick()
    root.after(3000,root.quit)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我在程序中调用上面的函数

thread.start_new_thread(display,(val1,val2))
Run Code Online (Sandbox Code Playgroud)

线程正常启动,主程序继续,但显示功能在3秒后没有退出,请建议如何加入该线程或销毁它而不影响主程序

python multithreading join

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

在python中将字母数字字符串转换为int,反之亦然

我正在尝试将最大长度为 40 个字符的字母数字字符串转换为尽可能小的整数,以便我们可以轻松地从数据库中保存和检索。我不知道是否有任何可用的 python 方法或我们可以使用的任何简单算法。具体来说,我的字符串将只有字符 0-9 和 ag。因此,请就我们如何唯一地将字符串转换为整数(反之亦然)提出任何建议。我在 Cent os 6.5 上使用 Python 2.7

python

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

如何从特定行启动shell脚本?

#!/bin/sh
echo "install 1"
echo "install 2"
[ $? -eq 0 ] || exit $?;
cyberciti 
[ $? -eq 0 ] || exit $?;
echo "install 3"
echo "install 4"
Run Code Online (Sandbox Code Playgroud)

上面的脚本在第4行(cyberciti)处失败.在进行必要的更正后,如何跳过已经执行的命令,如何获取行号,并从该行开始重新运行脚本?

linux shell

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

如何在Postgres中使用“ for语句”触发器?

如果我们像下面这样编写FOR STATEMENT触发器,我们如何才能仅访问触发器过程/函数中的更新行

CREATE FUNCTION func1()
RETURNS trigger AS $$
BEGIN
    --access only updated/inserted rows here???
    RETURN null;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trig1
AFTER UPDATE OR DELETE OR INSERT
ON tbl1 FOR STATEMENT
EXECUTE PROCEDURE func1();
Run Code Online (Sandbox Code Playgroud)

我的意思是当有多个行更新一次,如下所示

update tbl1 set col1=1 where col2 in (2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

sql postgresql

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

Python将文件读入内存以进行重复的FTP复制

我需要读取本地文件并使用 FTP 复制到远程位置,我使用不同的名称(如 f1.txt、f2.txt...f1000.txt 等)将同一文件 file.txt 重复复制到远程位置数百次。现在,是否有必要始终为每个 FTP 副本打开、读取、关闭我的本地 file.txt,或者是否有办法将其存储到变量中并始终使用它,并避免文件打开、关闭功能。file.txt是6KB的小文件。下面是我正在使用的代码

for i in range(1,101):
    fname = 'file'+ str(i) +'.txt'
    fp = open('file.txt', 'rb')
    ftp.storbinary('STOR ' + fname, fp)
    fp.close()
Run Code Online (Sandbox Code Playgroud)

我尝试读取字符串变量并替换 fp 但 ftp.storbinary 需要第二个参数才能具有方法 read(),请建议是否有更好的方法来避免文件打开关闭,或者让我知道它是否根本没有性能改进。我在 Windows 7 上使用 python 2.7.10。

python windows ftp

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