Seite 1 von 1

mal wieder *args

Verfasst: Freitag 30. Juni 2006, 23:48
von murph
hi!
ich habe jetzt bei meinem code das problem, dass ich nunmal *args annehmen muss:

Code: Alles auswählen

    def execute(self,uid, sql, *args):
        print sql, args
        self.cur[uid].execute(sql, args)
        self.fetched = self.cur[uid].fetchall()
        self.conn[uid].commit()
        return self.fetched
die args sind immer die variablen, die seperat für die dbapi übergeben werden, hab wegen sqlinjection umgestellt :-)
aber nun habe ich den fall, dass ich einfach nur eine tabelle erstellen möchte, deren namen aber schon fest ist! nun habe ich keine args und werde mit einem keyerror bedankt...oder sehe ich da was im falschen zusammenhang?

Re: mal wieder *args

Verfasst: Samstag 1. Juli 2006, 07:39
von gerold
murph hat geschrieben:nun habe ich keine args und werde mit einem keyerror bedankt...oder sehe ich da was im falschen zusammenhang?
Hi murph!

Code: Alles auswählen

In [1]: def hallo(sql, *args):
   ...:     print sql
   ...:     print args
   ...:
In [2]: hallo("a", "b", "c")
a
('b', 'c')
In [3]: hallo("a")
a
()
Wie man in diesem Code gut sieht, ist die Variable "args" ein Tuppel. Du musst also nur prüfen, ob etwas im Tuppel steht, oder nicht. (len(args))
Wenn nicht, dann brauchst du "args" auch nicht an die andere Funktion übergeben.

lg
Gerold
:-)

Verfasst: Samstag 1. Juli 2006, 08:24
von murph
mal wieder nlichts, nach anderthalb stunden dahintergekommen, dass man cur.fetchall() nur einmal abfragen kann und danach gelöscht wird.
hatte vorher dann immer mit einer leeren liste zu kömpfen x,X