Thread: Is it possible to call other functions inside plpythonu?

Is it possible to call other functions inside plpythonu?

From
Frank Lanitz
Date:
Hi folks,

Just looking for a nice server side solution to implement some
fundamental logic for an application. plpythonu looks in this tmers very
well as I'm liking the syntax of Python. However, an very old blog post
at [1] made me unsure whether really to use it. Is it still (or has it
ever been) an issue that plpythonu is having a lot of overhead and not
able to make use of other functions? Didn't found anything on docu for
9.1 about that.

Cheers,
Frank

[1] http://spyced.blogspot.de/2005/04/plpython-intro.html

Re: Is it possible to call other functions inside plpythonu?

From
Stuart Bishop
Date:
On Fri, Apr 27, 2012 at 4:42 PM, Frank Lanitz <frank@frank.uvena.de> wrote:
> Hi folks,
>
> Just looking for a nice server side solution to implement some
> fundamental logic for an application. plpythonu looks in this tmers very
> well as I'm liking the syntax of Python. However, an very old blog post
> at [1] made me unsure whether really to use it. Is it still (or has it
> ever been) an issue that plpythonu is having a lot of overhead and not
> able to make use of other functions? Didn't found anything on docu for
> 9.1 about that.

There is overhead transforming data to and from types that the Python
interpreter can work with. How much overhead is rather subjective - we
find it fast enough for the things we use it for. The Python syntax
can become a bit cumbersome if you need to interact with the database
a lot, in which case plpgSQL is likely the better language for that
job. There are counter examples too, where the Python code is much
cleaner and in some cases lets you do things impossible in plpgSQL.
Access to the Python standard library gives you a great toolkit, and
it being 'unsafe' you can do stuff you would otherwise need to write
and deploy C extensions for.

--
Stuart Bishop <stuart@stuartbishop.net>
http://www.stuartbishop.net/

Re: Is it possible to call other functions inside plpythonu?

From
Stuart Bishop
Date:
On Fri, May 4, 2012 at 4:09 PM, Stuart Bishop <stuart@stuartbishop.net> wrote:
> On Fri, Apr 27, 2012 at 4:42 PM, Frank Lanitz <frank@frank.uvena.de> wrote:
>> Hi folks,
>>
>> Just looking for a nice server side solution to implement some
>> fundamental logic for an application. plpythonu looks in this tmers very
>> well as I'm liking the syntax of Python. However, an very old blog post
>> at [1] made me unsure whether really to use it. Is it still (or has it
>> ever been) an issue that plpythonu is having a lot of overhead and not
>> able to make use of other functions? Didn't found anything on docu for
>> 9.1 about that.

I forgot to mention that you can (and always have been able to) call
other functions using plpy.execute("SELECT some_func()"). If you need
to invoke Python functions, you can also just 'import' the module like
any other Python code and avoid the overheads of converting data too
and from PostgreSQL data types. You may need to ensure the PYTHONPATH
environment variable gets set correctly if you need to import your own
code from the filesystem rather than the standard library.

--
Stuart Bishop <stuart@stuartbishop.net>
http://www.stuartbishop.net/