list of interger as paramter für execute

Fragen, Probleme etc. zu den prozedularen Sprachen ( PL/Tcl, PL/Perl und PL/Python).
Antworten
fuppes
Benutzer
Beiträge: 36
Registriert: Mi 4. Jun 2008, 16:18

list of interger as paramter für execute

Beitrag von fuppes » Do 23. Okt 2008, 14:54

Hallo,

ich versuche gerade folgendes zum laufen zu bringen:

Code: Alles auswählen

del_pom_itself_sql2 = plpy.prepare('''DELETE FROM pom_xml2
                      WHERE pom_id in ($1)''', ['INTEGER'])


Die frage ich jetzt wie definiere denn jetzt den data type für $1 wenn es sich dabei um eine list von integern handelt? Also integer geht ja mal nicht und record auch nicht.....

akretschmer
Erfahrener Benutzer
Beiträge: 7630
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer » Fr 24. Okt 2008, 12:27

fuppes hat geschrieben:Hallo,

ich versuche gerade folgendes zum laufen zu bringen:

Code: Alles auswählen

del_pom_itself_sql2 = plpy.prepare('''DELETE FROM pom_xml2
                      WHERE pom_id in ($1)''', ['INTEGER'])


Die frage ich jetzt wie definiere denn jetzt den data type für $1 wenn es sich dabei um eine list von integern handelt? Also integer geht ja mal nicht und record auch nicht.....


Ist das in plpyton oder so? Kenn ich nicht. Allgemein, Du willst offensichtlich aus einem Text, der Deine Liste von INTs enthält, ein Statement basteln. Das geht prinzipiell so, daß Du einen kompletten String baust und diesen an EXECUTE verfütterst. Also, als Beispiel, 'select * from foo where id in (' || '1,2,3' || ')', wobei das '1,2,3' hier Deine Liste von Integern ist.

Falls meine Antwort daneben liegen sollte, dann stelle die Frage bitte präziser.

Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

fuppes
Benutzer
Beiträge: 36
Registriert: Mi 4. Jun 2008, 16:18

Beitrag von fuppes » Fr 24. Okt 2008, 13:23

ohje.... ich bin doch nen aff...

Also so gehts:

Code: Alles auswählen

del_pom_itself_sql2 = 'DELETE FROM pom_xml2 WHERE pom_id in (%s)'
...
plpy.execute(del_pom_itself_sql2%str(addition_tree_list)[1:-1])


Ja genau, das is Python. Sorry für die unnötige frage....

Antworten