Search Postgresql Archives

Re: Calling Python functions with parameters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jerry McRae wrote:
I am having a problem with the simplest of Python functions, so I must be
doing something wrong.  After hours of searching and trying many options, I
need the key that my puny brain is missing here.

I cannot pass parameters to a plpythonu function.  I have tried within psql
and with pgAdmin III (which adds IN or INOUT to the parameter list - which I
can't find documented).  I'm an advanced Python programmer but a beginning
PostgreSQL user.

Here is what I have, which I copied almost verbatim from example code:
----------------------------
test_dev-# \p
create or replace function testf5i(a integer,b integer)
 RETURNS integer AS $$
  if a > b:
    return a
  return b
$$ language plpythonu


test_dev-# \g
CREATE FUNCTION
test_dev=# select testf5i(1,2);
ERROR:  plpython: function "testf5i" failed
DETAIL:  exceptions.NameError: global name 'a' is not defined

That looks like the same error I received in my first attempts at plpython. After muddling with it for some time (and this was my first practical Python code at all, so you can imagine how confused I was), I added (the equivalent to your code) at the beginning:

a = a
b = b

As ridiculous as that looks, it's what worked for me. Although, function contained a class with several methods (the function creates "slugs" on the fly from proper names for use in URLs, eg. Élisabeth Carrière -> elisabeth_carriere). So, maybe my own problems were related to that. PlPython remains a mystery to me, in many respects. It's certainly *not* the best way to learn Python.

PS.  What I need to do, which I also could find not examples on the mailing
lists or the Internet, is to de-normalize some tables (user, addresses,
phones, emails) into one big view and then update the proper tables upon
updates.  The web application then can just get one row and not have to deal
with all the different tables

...

(And I'm surprised that I could find no examples of anyone already doing
this?  Is there something inherently wrong with this approach?)

Perhaps it's simply not worthwhile. That seems like a great deal of work just to avoid having to deal with several tables. (I didn't end up using my slug-creator function, myself, and moved that logic into the application scripts.)

b




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux