Portál AbcLinuxu, 10. května 2025 06:23

Dotaz: python sqlite: prohlédnutí výsledného sql příkazu

1.7.2013 11:21 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
python sqlite: prohlédnutí výsledného sql příkazu
Přečteno: 271×
Odpovědět | Admin
Ahoj mám kód:
orderby='start'

conn.execute('''
  SELECT filename, num,  start,  end
    FROM rec
    ORDER BY ?''', (orderby,))
Ale neřadí mi to. Když tam to orderby napíšu ručně, tak to funguje správně.
Dotaz: Dá se nějak podívat na výsledné složené sql, které python posílá do sqlite?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.7.2013 11:28 axel
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
O pythonu nic nevim, nicmene vypada to divne. Co by to melo podle tebe delat? Zda se, ze se snazis pouzit binding variable misto query factoringu.
1.7.2013 12:28 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle meho sqlite3 ty vstupni parametry escapuje, protoze prepoklada, ze je to hodnota a ne column name. Normalne bych pouzil v tomto pripade "string %s" % orderby :)
1.7.2013 12:54 Kit
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Otazník není možné použít pro klíčová slova ani názvy polí, ale pouze pro data.
1.7.2013 14:02 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jo Kit má pravdu, takhle to bude, někde jsem něco podobného zahlédl.
Jo dělám to teď tak jak píše Mr.S1lent.cz.

Čili je to funkční, ale stále zůstává otázka. Lze si nějak vypsat ten výsledný sql co sqlite dostane ke zpracování? Hodilo by se to k dalším složitějším sql příkazům.

1.7.2013 14:31 Kit
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Třeba takto:
orderby='start'
query='''
  SELECT filename, num,  start,  end
    FROM rec
    ORDER BY %s''' % orderby
print(query)
conn.execute(query)
1.7.2013 15:25 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Jo tohle je jasný, ale mě zajímá ta varianta co jsem psal jako první. Když to nahrazování placeholders dělá až ta funkce execute z knihovny sqlite3.
1.7.2013 15:45 Kit
Rozbalit Rozbalit vše Re: python sqlite: prohlédnutí výsledného sql příkazu
Nevím, jak přesně ten mechanismus funguje, ale na server podle mne putuje zvlášť SQL dotaz a zvlášť data. Teprve při lexikální analýze je server kompletuje, tzn. nikdy z toho nedělá kompletní dotaz ve tvaru stringu.

To umožňuje délku dat mnohem větší, než je limit délky SQL dotazu a také to umožňuje manipulaci s binárními daty.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.