[Python-Dev] Using Cython for developing a module to be used from postgreSQL/pl/python
Hannu Krosing
hannu at krosing.net
Sat Mar 31 16:04:16 CEST 2012
On Sun, 2012-04-01 at 00:44 +1100, Ben Finney wrote:
> Hannu Krosing <hannu at krosing.net> writes:
>
> > Has anyone used Cython for developing a module to be used from
> > postgreSQL/pl/python.
> >
> > Something that calls back to PostgreSQL internals.
>
> Are you aware that PostgreSQL has long provided Python as a language for
> writing stored procedures in the database?
>
> <URL:http://www.postgresql.org/docs/current/static/plpython.html>
>
> Does that meet your needs?
Sure, I have even contributed code to it ;)
But what i want is some way to call _back_ into PostgreSQL to use its
internal functions from a module imported from pl/python.
I tried ctypes module and got a segfault when i used the following
create or replace function callback_to_postgres(rn_text text)
returns text
language plpythonu
as
$$
from ctypes import *
import struct
pg = cdll.LoadLibrary('/usr/lib/postgresql/9.1/bin/postmaster')
pg.pq_flush()
return rn_text
$$;
select send_raw_notice('do you see me?');
<CRASHES HERE>
I determined that the call to pg.pq_flush() was the one crashing the
backend, so I assume that cdll.LoadLibrary did not get the already
running backend, but loaded another copy of it as library.
Now I'm looking for a simplest way to do some C-wrapping. I have used
Cyuthon for wrapping simple library calls and I really don'r think there
would be hard problems doing this inside the postgreSQL extension build
framework.
I was just hoping that someboduy had already taken care of all the
nitty-gritty detaiuls of setting this up
-------
Hannu Krosing
PostgreSQL Unlimited Scalability and Performance Consultant
2ndQuadrant Nordic
PG Admin Book: http://www.2ndQuadrant.com/books/
More information about the Python-Dev
mailing list