[Python-de] Python und PostgreSQL : update
Gerhard Häring
gh at ghaering.de
Fre Dez 12 18:18:42 CET 2003
dbuechel at tiscali.ch wrote:
> Hallo,
>
> ich bin Python-Anfängerin und habe so meine Probleme. Ich benutzte Python
> um eine PostgreSQL Datenbank zu aktuallisieren.
Du verwendest hoffe ich mal ein Modul dazu, dass die Python DB-API
implementiert, oder? Also pyPgSQL, psycopg, oder wenn man PyGreSQL
verwendet, das Modul "pgdb".
> Ich habe eine Tabelle "Kante"
> mit den Attributen "GID", "Kosten", "Länge" etc. Nun habe ich mit Python
> für jede Reihe einen Wert für das Attribut "Kosten" berechnet. Kann mir
> nun jemand helfen, wie ich die berechneten Werte in die PostgreSQL Tabelle
> einlesen kann mit Hilfe der PyGreSQL-Interface? In der Dokumentation (www.postgresql.org)
> habe ich leider keine Beispiele gefunden...
>
> Vielleicht kann mir jemand ein Beispiel geben.
So was?
# --- START ---
from pyPgSQL import PgSQL
def kosten(laenge):
return laenge * 1.5
con = PgSQL.connect()
cur = con.cursor()
cur.execute("select id, laenge from kante")
for row in cur.fetchall():
# row[0] ist die id, row[1] ist laenge
cur.execute("update kante set kosten=%s where id=%s",
(kosten(row[1]), row[0]))
con.commit()
con.close()
# --- ENDE ---
Für PyGreSQL einfach das Import-Statement und den Aufruf von .connect()
entspr. ändern.
Ach ja, ich bin von folgendem Test-Schema ausgegangen:
create table kante(id serial, kosten numeric, laenge numeric);
insert into kante(laenge) values (10);
insert into kante(laenge) values (20);
-- Gerhard