[Python-de] pypgsql Tabellenamen mit grossbuchstaben nicht erlaubt?

Hans-Peter Jansen hpj at urpla.net
Die Feb 8 23:49:44 CET 2005


On Tuesday 08 February 2005 22:54, Holger Duerer wrote:
> >>>>> "HP" == Hans-Peter Jansen <hpj at urpla.net> writes:
>
>     HP> On Tuesday 08 February 2005 21:31, Mican Bican wrote:
>     >> Danke für die schnelle Antwort. Ist so wie du sagst... D.h.
>     >> ich müsste dann immer so abfragen:  st.execute("SELECT *
>     >> FROM \"Farbton\"") .. ist grausig mit den \
>
>     HP> Warum nicht mit single quotes?
>     HP> st.execute('SELECT * FROM  "Farbton"') ..
> Oder Tripelquotes, wenn's denn sein muss...
>
>     HP> Was m.A.n. viel wichtiger ist, bei INSERT und UPDATE immer
>     HP> brav den Qoute in den Argumenten quoten! Hatte gerade heute
                                           ^^^^^^
                                  Ähem: ich meinte escapen. Sorry!

>     HP> den Fall..
>
> Wer Quotes in Argumenten quotet macht sich verdaechtig, dass er die
> einargumentige Variante von execute verwendet.  Ich dachte immer
> dass man diese Variante nur fuer Leute reserviert hat, die mit der
> zweiargumentigen Version nicht klarkommen und lieber alles zu Fuss
> machen oder sich auf SQL-insert-Atacken einlassen...
> Oder hab ich da was falsch verstanden?

Wenn ich nicht etwas sehr falsch verstanden habe, muß man in dem 
Datentupel auch die in den Daten steckenden Quotes escapen, e.g.:

c.execute(
    """INSERT INTO breakfast (name, spam, eggs, sausage, price)
    VALUES (%s, %s, %s, %s, %s)""",
          ('Spam and Sausage Lover\'s Plate', 5, 1, 8, 7.95 ))

In meinem Fall baue ich den INSERT string on the fly zusammen, und muß 
je nach verwendetem String Quote eben diesen escapen, oder weißt Du 
was besseres?

Pete