注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

PL/Python的plpy模块  

2012-05-24 22:20:41|  分类: Postgresql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
PL/Python 语言会自动导入一个模块plpy。
目前plpy实现的方法有:
plpy.debug(msg), plpy.log(msg), plpy.info(msg),
plpy.notice(msg), plpy.warning(msg), plpy.error(msg), 
,plpy.fatal(msg). 
plpy.error and plpy.fatal 会抛出一个Python异常

但是最重要的两个方法是(执行sql语句方法)
plpy.execute
plpy.prepare


Example:
rv = plpy.execute("SELECT * FROM my_table", 5)
返回my_table的五条记录
foo = rv[i]["my_column"]
访问第i行my_column列的值


plan = plpy.prepare("SELECT last_name FROM my_users WHERE first_name = $1", [ "text" ])
text是$1变量的类型
rv = plpy.execute(plan, [ "name" ], 5)
为$1传入"name"参数

例子:
plpython_script.sql

create table my_table(

        id integer,
        name varchar(128),
        language varchar(128),
        primary key(id)
);
insert into my_table values(1,'hurry','java');
insert into my_table values(2,'hurry','python');
insert into my_table values(3,'hurry','javascript');
insert into my_table values(4,'hurry','shell script');
insert into my_table values(5,'hurry','ruby');


CREATE OR REPLACE FUNCTION getMyTableLanguages(n bigint)
 RETURNS SETOF text
 AS $$
  languages = []
  records = plpy.execute("SELECT * FROM my_table", n)
  for record in records:
      languages.append(record['language'])
 
  return languages
 $$ LANGUAGE plpythonu;
 
 
select getMyTableLanguages(5) as languages;
 
 
CREATE OR REPLACE FUNCTION getMyTableNameByLanguage(lan varchar)
 RETURNS varchar
 AS $$
  presql = plpy.prepare("SELECT name FROM my_table WHERE language = $1", ['varchar'])
  record = plpy.execute(presql,[lan],1)
  return record[0]['name']
 $$ LANGUAGE plpythonu;
 
select getMyTableNameByLanguage('java') as name;

结果:

postgres@hjzheng-VirtualBox:~$ psql -f plpython_script.sql 

CREATE FUNCTION
  languages   
--------------
 java
 python
 javascript
 shell script
 ruby
(5 rows)
 
CREATE FUNCTION
 name  
-------
 hurry
(1 row)


参考资料
  评论这张
 
阅读(531)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017