1、搜索安装包

dnf search python |grep postgresql

2、根据postgresql版本选择安装

dnf install postgresql12-plpython3.x86_64 

3、postgresql 数据库安装扩展

CREATE EXTENSION plpython3u;

4、创建python函数

4.1、比较两个数值大小

CREATE FUNCTION pymax (a integer, b integer)
  RETURNS integer
AS $$
  if a > b:
    return a
  return b
$$ LANGUAGE plpython3u;

执行 

select pymax(112,13);

4.2、获取今天的日期

create or replace function today()
RETURNS varchar
as
$$
import datetime 
today = datetime.date.today()
return today
$$
LANGUAGE plpython3u;

执行

select today()

结果:2020-10-23

4.3、获取时间相当于当前时间偏移量的日期

create or replace function timedelta(a integer)
RETURNS varchar
as $$
global a
import datetime
time_now = datetime.datetime.now()
time = (time_now + datetime.timedelta(days=a)).strftime("%Y%m%d")
return time
$$
LANGUAGE plpython3u;

执行

select timedelta(-1)

结果:20201022

4.3、执行python文件中的函数

4.3.1、创建python文件 /usr/lib64/python3.6/dateUtil.py

import datetime
def mytimedelta():
    time_now = datetime.datetime.now()
    time = (time_now + datetime.timedelta(days=1)).strftime("%Y%m%d")
    return time

def mytimedelta2(daynum):
    time_now = datetime.datetime.now()
    time = (time_now + datetime.timedelta(days=daynum)).strftime("%Y%m%d")
    return time
~

4.3.2、创建函数

-- 不传递参数
CREATE or replace FUNCTION mytimedelta()
  RETURNS varchar
AS $$
  import dateUtil
  return dateUtil.mytimedelta()
$$ LANGUAGE plpython3u;

-- 传递参数
CREATE or replace FUNCTION mytimedelta2(a integer)
  RETURNS varchar
AS $$
import dateUtil
return dateUtil.mytimedelta2(a)
$$ LANGUAGE plpython3u;

4.3.3、执行函数

select mytimedelta()
select mytimedelta2(-5)

结果:20201024

最后修改于 2020-09-17 16:19:27
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇