我们可以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)
我很抱歉,如果这段代码太难以评论,请建议一个更好的方法来做,谢谢
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个问题:
parent_id是integer,但它会被替换引号?int变量的正确格式说明符是什么?select into不起作用EXECUTE?如何使上面的注释查询使用表名传递?当我单独运行下面的函数时,它会在 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秒后没有退出,请建议如何加入该线程或销毁它而不影响主程序
我正在尝试将最大长度为 40 个字符的字母数字字符串转换为尽可能小的整数,以便我们可以轻松地从数据库中保存和检索。我不知道是否有任何可用的 python 方法或我们可以使用的任何简单算法。具体来说,我的字符串将只有字符 0-9 和 ag。因此,请就我们如何唯一地将字符串转换为整数(反之亦然)提出任何建议。我在 Cent os 6.5 上使用 Python 2.7
#!/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)处失败.在进行必要的更正后,如何跳过已经执行的命令,如何获取行号,并从该行开始重新运行脚本?
如果我们像下面这样编写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) 我需要读取本地文件并使用 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。
postgresql ×3
python ×3
sql ×2
dynamic-sql ×1
ftp ×1
join ×1
linux ×1
plpgsql ×1
shell ×1
sql-server ×1
windows ×1