Re: Update with function - Mailing list psycopg

From Adrian Klaver
Subject Re: Update with function
Date
Msg-id 4F75B8FF.4080400@gmail.com
Whole thread Raw
In response to Update with function  (egbert <egbert.bouwman@xs4all.nl>)
Responses Re: Update with function  (egbert <egbert.bouwman@xs4all.nl>)
List psycopg
On 03/30/2012 03:58 AM, egbert wrote:
> Hello,
> I am new to this list, and a fairly unsophisticated user of postgresql
> and psycopg.
>
> I try to update one field in all records of a table.
> The new value is too complicated for a simple expression, so I thought
> about a python function. That function uses another field, recno, from
> each record.
> My question is: how do I pass that second field to the function.
>
> The relevant parts of my script are now:
>
> define makeyear(nummer):
>      # ...
>      return value
>
> cur.execute("update books set inyear=%s", (makeyear(recno),))
>
> The error message says that recno is not defined.


The parameter list you are passing lives outside the database you are
using so it has no reference to the field recno.

A simple solution that demonstrates one way to do the above:


cur.execute("select recno from some_table")

for row in cur:
    recno = cur[0]
    cur.execute("update books set inyear=%s", (makeyear(recno),))

> egbert


--
Adrian Klaver
adrian.klaver@gmail.com

psycopg by date:

Previous
From: egbert
Date:
Subject: Update with function
Next
From: egbert
Date:
Subject: Re: Update with function