Posts Tagged ‘python’

Retornando arrays con PlPython

Posted on the Abril 9th, 2009 under GNU/Linux,Probando herramientas,Software Libre by nacho

PlPython es un lenguaje procedural (PL) que permite utilizar Python en una base de datos PostreSQL para poder escribir los procedimientos almacenados. En realidad actualmente es un lenguaje no confiado (untrusted). Se puede leer más aquí: PlPythonu.

Si bien Python maneja listas, diccionarios y otras estructuras de datos con bastante simpleza, no encontramos una manera de hacer casting a un array o vector de PostgreSQL. Particularmente, en el ejemplo debajo, se puede ver que implementamos un wrapper para poder utilizar el motor de expresiones regulares de Python, dentro de la DB, ya que tiene algunas cuestiones más avanzadas que el que trae PgSQL por defecto.

Lo que hicimos fue crear una cadena, con la representación serializada de un Array y dejar que haga el casting PgSQL. Les dejo el código para que lo adapten a sus necesidades. En este caso devuelve un vector de TEXT (TEXT[]) con la idea de emular el resultado devuelto por regexp_matches() en plsql. la signatura de la función es esta:

regexp_python(text,text)  RETURNS text[]
-- Function: regexp_python(text, text)
 
-- DROP FUNCTION regexp_python(text, text);
 
CREATE OR REPLACE FUNCTION regexp_python(p_str text, p_ereg text)
  RETURNS TEXT[] AS
$BODY$import re
import string
m = re.search(p_ereg, p_str,re.I)
IF m IS None:
    RETURN None
ELSE:
    RETURN ('{"'+'","'.join([re.escape(x) FOR x IN m.groups('NULL')])+'"}').REPLACE('"NULL"','NULL')$BODY$
  LANGUAGE 'plpythonu' VOLATILE
  COST 100;
ALTER FUNCTION regexp_python(text, text) OWNER TO postgres;

Los arrays en PgSQL son serializados como una colección de datos entre llaves:
{‘text1′,’text2′}.

Gracias Milton y Daiana por investigar y aplicar todas estas cosas conmigo ;-)

çíàêîìñòâà íà êàâìèíâîäàõ
ïîðíî ñàéò çâåçä øîó áèçíåññà
Îíëàéí êóïèòü â åêàòåðèíáóðãå Ëåâèòðà
ìåíþ äëÿ äèåòû ïî 3 ãðóïïå êðîâè
êóïèòü äæåíåðèê ñèàëèñ ñîôò
äèåòà þ.íà÷àëîâîé
çíàêîìñòâà àáõàçèÿ
ñëóæáà çíàêîìñòâ íèæíèé íîâãîðîä
Íèçêàÿ öåíà êóïèòü â ìîñêâå Çèáàí
î÷êîâàÿ äèåòà
ðåçóëüòàòû ïîõóäåíèÿ è îçäîðîâëåíèÿ ñ ïîìîùüþ ãåðáàëàéô
ìàäè 24 çíàêîìñòâà
Íå äîðîãî êóïèòü â ñàìàðå Ñèàëèñ Ñîôò
ñâèíãåð çíàêîìñòâà â êðàñíîÿðñêå
äèåòà 2 ãðóïïå êðîâè
ðåöåïòû áåññîëåâîé äèåòû
äèåòà àëñó êîôå è øîêîëàä
ôîðóì îâîùíàÿ äèåòà
ftp ñêà÷àòü ïîðíî äëÿ ñìàòôîíà
ðîñòîâ ïîðíî
çíàêîìñòâà òîðîíòî
äèåòà î÷èñòêà êèøå÷íèêà
ïåðåäà÷à ïåðâîãî êàíàëà ìàëàõîâ ïëþñ ïåðåäà÷à âîçìîæíîñòÿõ ïîõóäåíèè
àñüêàçíàêîìñòâà
ïîðíî ñ ÷å÷åíêàìè
çíàêîìñòâà äèòåé 10-14 ëåò
êðåìëåâñêàÿ äèåòà ïî äíÿì
ëå÷åíèå èìïîòåíöèè ñèàëèñ ëåâèòðà âèàãðà ñðàâíèòåëüíûå öåíû
åêàòåðèíáóðã ñèàëèñ
ïîðíîãðàôè÷åñêîå âèäåî ëåñáèÿíîê
ÿòðûøíèê ïîòåíöèÿ
ïðîñòàòèëåí äåéñòâèå
çíàêîìñòâî â êðàñíûõ áàêàõ
ñåêñ çíàêîìñòâà â íèæíåâàðòîâñêå
êëèîí ä ñòîèìîñòü
ïîðíî ðîëèê äîñòóïíûå
ðåöåïò íàñòîéêè äëÿ ïîõóäåíèÿ ëèñòâåííûé ãðèá òðóòîâèê
ïðåâüþ ôîðóì ïîðíî ññûëêè
ðàñêàçû äåòñêîãî ïîðíî
ïîðíî xxx çàãðóçèòü
êàâêàçñêèå ñàéòû çíàêîìñòâ
êðåìëåâñêàÿ äèåòà ôîðóì åâãåíèé ÷åðíûõ
ïîçíàêîìëþñü ñî ñòåðâîé
öèí öèí ïîõóäåíèå
ïîðíî ñààêàøâèëè ñêà÷àòü
âûñîêîïàðíûå ôðàçû äëÿ çíàêîìñòâà
ãåé çíàêîìñòâà íåãðû
êaê ïîõóäåòü ía 10 êã ça 8 äíåé
ðàäìèëà àíêåòà çíàêîìñòâà
çäîðîâüå ïî÷êè äèåòà
Ñðî÷íî êóïèòü â Íîâîñèáèðñêå Ñèàëèñ
çíàêîìñòâî c àíãëè÷àíèíîì
Äåøåâî ñòîèìîñòü âèàãðà 50 ìã
ãîä çíàêîìñòâà îòâåòèòü
Àíîíèìíî êóïèòü â ïèòåðå ïîâûøåíèå ïîòåíöèè
ñàìûå ëóäøèå äèåòû
Online ïðèîáðåñòè âèàãðà òàáëåòêè
àðáóçíàÿ äèåòà ôîðóì
Àïòåêà êóïèòü â îìñêå ñðåäñòâî ïîâûøåíèÿ ïîòåíöèè
âîëãîôàðì ñèàëèñ ñîôò
ãåé ïîðíî êëèïû ñêà÷àòü
êàáà÷êîâàÿ äèåòà
êàëîðèè äèåòà ñêà÷àòü êîìïüþòåðíûå ïðîãðàììû
ýôôåêòèâíîñòü áàíàíîâîé äèåòû
òåðæèíàí íà ðàííèõ ñðîêàõ áåðåìåííîñòè
Online êóïèò â ðîññèè ïîâûøåíèå ïîòåíöèè
çíàêîìñòâà 8 903
äåâ÷îíêè ðîñòîâà ïîçíàêîìèòüñÿ
êóðèíûé áóëüîí ïîõóäåíèå
ãäå ïîçíàêîìèòüñÿ â ìîñêâå
àëêîãîëü è ñåàëåêñ
êàê ïîçíàêîìèëèñü àëôåðîâà è àáäóëîâ
 êàêîé àïòåêå êóïèòü â Íîâîñèáèðñêå èíäèéñêàÿ âèàãðà
ïîðíî ÷àñòíîå çíàìåíèòîñòåé
ýêñòðåííûå ìåòîäû ïîõóäåíèÿ
çíàêîìñòâà òðàíñû äîíåöê
Ñðî÷íî ñòîèìîñòü Ñèàëèñ Ñîôò
 êàêîé àïòåêå êóïèòü â ñàíêò ïåòåðáóðãå Âèàãðà
êðàñèâûå ïîðíî äåâóøêè êèåâ
çíàêîìñòâà ðèììèíã
ñêà÷àòü êíèãó äèåòà íà êàïóñòíîì ñóïå
ëåñòàò ôîòî
ïîðíî ñ òîëñòûìè îò 40 äî 50 ëåò
áûñòðî ïîõóäåòü ïîñëå ðîäîâ
Áåç ðåöåïòà êóïèòü äåøåâóþ âèàãðà òàáëåòêè
áûñòðûå íå èçíóðèòåëüíûå äèåòû
çíàêîìñòâà ã.âîëîãäà
âèàãðà àïòåêà êðàñíîÿðñê
Îíëàéí êóïëþ âèàãðó ñèàëèñ ëåâèòðó
êîäèðîâàíèå ïðè ïîõóäåíèè
ïîìî8ãàåò ëè áîäèìèðèí ðåàëüíî ïîõóäåòü
ïîðíî âèäåîêëèïû ñêà÷àòü
àâñòðàëèÿ ðóñêîÿçû÷íûé ñàéò çíàêîìñòâà
äåéñòâîâàòü äæåíåðèê ñèàëèñ ñîôò
äèåòà õîðîøèõ íîâîñòåé
ýôôåêòèâíî ïîõóäåòü çà ìàêñèìàëüíî êîðîòêèé ñðîê
äèåòà 90
ñêà÷àòü ñóïåð äèåòó
çíàêîìñòâà ñ áèñåêñóàëàìè
çíàêîìñòâà â ã.êñòîâî