用Python來擴展Postgresql(一)

本文主要是經過簡單的例子演示一下如何在Postgresql裏面寫Python代碼。 python

1.在Postgresql的機器上安裝Python。(這貌似是廢話)

2.檢查Postgresql的安裝目錄下面的 lib 文件夾。

檢查有沒有 plpython.dll 或者 plpython2.dll。 這是Postgresql 調用Python 2.X的DLL文件,在新版的Postgresql 9.X中不必定會有,這個真有點奇怪。自帶的只有一個plpython3.dll, 這是針對Python 3.X的,鑑於如今 3.X的Python還不通用,主流的應用仍是使用Python 2.X。若是Postgresql裏面沒有,能夠經過如下連接下載這個文件,而且放到 lib 下面: sql

http://forums.enterprisedb.com/posts/downloadAttach/231.page 數據庫

3.安裝pl/python語言。

在須要添加Python語言支持的數據庫裏面,運行如下SQL語句: 數組

    CREATE PROCEDURAL LANGUAGE plpythonu; 函數

若是SQL運行正常返回,沒有報錯,就證實pl/python語言模塊已經正確安裝了。若是有錯,請根據錯誤提示糾正。 post

4.建立第一個包含Python代碼的方法。

如今咱們來建立一個方法,這個簡單的方法的做用是判斷某一個數值是奇數仍是偶數: spa

CREATE OR REPLACE FUNCTION iseven(integer)
  RETURNS BOOLEAN AS
$BODY$
t = args[0]
return t%2 == 0
$BODY$
  LANGUAGE 'plpythonu' VOLATILE
  COST 100; postgresql

能夠看到,這實際上是一個普通不過的SQL函數定義,只不過Python的代碼是夾在兩個$BODY$中間。函數的參數是經過args這個數組來得到,而後Python代碼返回與SQL函數定義相一致的結果,在這裏還可使用Python的 if ,for ,while ,import等。讓咱們執行這一段SQL,以後你就能夠看到,在數據庫的Shemas->public->Functions下面有一個叫 iseven 的函數,這就是咱們剛生成的新方法。 get

5.使用咱們新定義的函數。

到這一步,其實就跟普通的SQL函數沒區別了,咱們能夠試着找一些是整數型的字段傳給這個新函數: io

select * from sometable where iseven(id);


總結:以上例子只是簡單的介紹了一下如何在postgresql裏面使用Python來擴展。之後有更深刻的探討,再分享給你們。

謝謝

相關文章
相關標籤/搜索