文档章节

pl_python

MtrS
 MtrS
发布于 2016/11/12 09:57
字数 560
阅读 7
收藏 0

函数 缓存策略

IMMUTABLE
STABLE
VOLATILE

SECURITY CONTEXT

SECURITY DEFINER

控制结构

if foo =='blah':
 do_something()
for x in somearray:
statements
[x['somefield'] for x in rv]
[1.1*x/(2 + x) for x in range(5)]
if some boolean expression:
stuff happens
while b < n:
 stuff happens

返回值构造

return somevariable
return somearray_variable

Python 通用结构

import somepackage
#这是一个注释
a, b = b, a+b
alist =['Jim', 'Guru', 'x3456']
name, title, phone = alist
alist = [] #declares empty array
adict = {} #declare empty dictionary
adict = {'Jim': 'Guru', 'Jimmy' : 'Intern'}

常量和函数

True
False
coerce(somestring, ther)
dict(..)
globals()
float(num_string)
hasattr(object, name)
hash(obj)
int(num_string)
len(somearray_ordict)
long(num_string)
map(function, sequence[, sequence, ...])
pow(x, y [, z])
range([start,] end [, step])
xrange(start [, end [, step]]) (#use for big lists)
round(x,[numdigits])
slice([start,] stop[, step])
split(pattern,string, [maxsplit])
str(object)
zip(seq1[, seq2,...])
somestring.split

运算符

+ - *
/ // *
** # power operator
& ^ | == #boolean operators
&= ^= |= #compound bool
<< >> #shift operators
<<= >>= #compound shift operators

异常处理

try:
stuff happens
 return something
except (IOError, OSError):
 return "an error has happened"
try:
stuff happens
 return something
except IOError:
 return "an IOError"
except RuntimeError:
 return "runtime error"
except:
 return "have no clue what happened"

常见异常状态

Exception
 StandardError
 ArithmeticError
 FloatingPointError
 OverflowError
 ZeroDivisionError
 EnvironmentError
 IOError
 OSError
 EOFError
 ImportError
 RuntimeError
 SystemError

内置对象Objects

plpy
 execute(sql) #returns a python dictionary object
 prepare(sql) # returns a prepared plan object
TD["new"] # trigger new data
TD["old"] # trigger old data
TD["when"] # BEFORE, AFTER, UNKNOWN
SD

常用包和包函数

os -- chdir(path), chmod(path), listdir(path)
 mkdir(path,[mode]), rmdir(path), unlink(path),
 write(fp, str), path.exists()
math -- pi
sys -- argv, modules,path,stdin,stdout,
 stderr, version, exit(n)
time -- time(), clock(), strftime(format, timetuple), sleep(secs)

代价参数

COST cost metric
ROWS estimated number of rows

Official PostgreSQL 8.3 PL/Python Documentation Official Python documentation

只包含了我们认为最有用的结构部分的一个子集,只有单个cheatsheet页面

  1. New in this release.

PLPYTHON 函数示例

CREATE OR REPLACE FUNCTION readfile (param_filepath text)
 RETURNS text
AS $$
 import os
 if not os.path.exists(param_filepath):
 return "file not found"
 return open(param_filepath).read()
$$ LANGUAGE plpythonu;

SELECT readfile('/test.htm');
--Doing postgresql queries --
-- PostgreSQL 查询示范
CREATE OR REPLACE FUNCTION getmydata (param_numitems integer)
 RETURNS SETOF mydata
AS $$
 #lets us grab the first param_numitems records
 rv = plpy.execute("SELECT pt_id, pt_observation FROM mydata",param_numitems);
 return rv
$$ LANGUAGE plpythonu;
SELECT *
 FROM getmydata(20) As d;

--Example Using custom classes and local classes --
-- 该示范同时使用用户定义类,以及本地类
CREATE OR REPLACE FUNCTION dofunkyplot (param_anum integer)
 RETURNS text
AS $$
 import aplotter
 import sys
 class WritableObject:
def __init__(self):
self.content = ''
def write(self, string):
self.content = self.content + string
 saveout = sys.stdout
 outbuffer = WritableObject()
 sys.stdout = outbuffer

#range (param_anum) w ill return array
 #consisting of 0 to param_num - 1 and formula
 # gets applied to each element
 # [1.1*x/(2 + x) for x in range(2)] -> [0 1.1/3]
 aplotter.plot([1.1*x/(2 + x) for x in range(param_anum)])
 sys.stdout = saveout
 return outbuffer.content
$$ LANGUAGE plpythonu;

SELECT dofunkyplot(n)
FROM generate_series(5,20, 10) As n;

© 著作权归作者所有

MtrS
粉丝 33
博文 602
码字总数 394176
作品 0
榆林
私信 提问
pl/python调用aerospike

1.先安装pl/python模块 yum install postgresql94-plpython.x86_64 在postgres用户下执行createlang plpythonu 2.编写python代码 /usr/lib64/python2.6/plpyascli_test.py import aerospikei......

jin哥
2015/08/10
0
0
PostgreSQL 发布全系安全更新

PostgreSQL 发布了全系安全更新版本,包括:9.5.1, 9.4.6, 9.3.11, 9.2.15, 和 9.1.20。这些安全漏洞设计正则表达式 CVE-2016-0773 和 PL/Java CVE-2016-0766。 其他改进内容包括: Fix many...

oschina
2016/02/12
1K
2
PostgreSQL 11 preview - jsonb_plpython, jsonb_plperl 插件, PG类型jsonb与pyton,perl程序类型的相互转换

标签 PostgreSQL , plpython , perl , jsonb , 存储过程 , 函数 , TRANSFORM , SQL类型与编程语言内部类型相互转换 , 增强 , 11 背景 PostgreSQL 支持多种内部存储过程语言,不同的语言对数据...

德哥
2018/07/28
0
0
PostgreSQL入门篇学习笔记(一)

PostgreSQL最强大的开源数据库,以前一直以为是mysql。可谓无知者,无畏也。井底之娃,一个八线城市的python运维dba的悲哀。 以下把PostgreSQL简称为pg。 1,pg是唯一能做到数据零丢失的开源...

落叶刀
2015/11/21
0
0
PostgreSQL 9.3加载Python

一.安装Python 1.从http://www.python.org/download/下载Python源码包 2.解压缩:#tar -zvxf Python-3.3.2.tar 3.编译安装 #./configure --enable-shared #make && make install 二.安装Pos......

李_昊
2013/06/21
0
1

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
38分钟前
2
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
40分钟前
2
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
51分钟前
3
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
55分钟前
1
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部