[DB-SIG] need some database API design advice
Peter Eisentraut
peter_e at gmx.net
Fri Apr 13 23:11:35 CEST 2012
On ons, 2012-04-11 at 12:48 -0700, Chris Clark wrote:
> > rv = plpy.execute("some SQL command")
> > if rv.colnames() is not None:
> > output(rv.colnames())
> > else:
> > output("it's a utility command")
>
> My 2 cents, I don't like any of them :-p
>
> I prefer the last one modified slightly:
>
> rv = plpy.execute("some SQL command")
> if rv.colnames():
> output(rv.colnames())
> else:
> output("it's a utility command")
>
> I.e. loose the None check.
That would misbehave if a result set exists but contains zero columns.
(Sounds strange, but it's possible.) Which actually now makes me lean
toward throwing an exception.
> I'm not sure I like making an explicit
> function call for the colnames. I.e. I think sticking with the pep249
> description attribute is a better solution, the API already exist so
> clone that (when possible) in your new api.
That would require populating this structure on every call, which would
be expensive for such a low-level API, or turning the attribute into a
fake function, which would be evil. I think this is best left to the
plpydbapi layer on top of it.
More information about the DB-SIG
mailing list