2009-06-13 1 views
0

Es sollte einfach sein, Bit Ich habe die letzte Stunde die Suche nach der Antwort verbracht. Dies verwendet psycopg2 auf Python 2.6.Python und psycopg2 - rohe sql Auswahl aus Tabelle mit ganzzahligen Kriterien

Ich brauche etwas wie folgt aus:

special_id = 5 
    sql = """ 
      select count(*) as ct, 
      from some_table tbl 
      where tbl.id = %(the_id) 
     """ 
cursor = connection.cursor() 
cursor.execute(sql, {"the_id" : special_id}) 

ich dies nicht zur Arbeit kommen kann. Wäre special_id eine Zeichenfolge, könnte ich %(the_id) durch %(the_id)s ersetzen und die Dinge funktionieren gut. Ich möchte jedoch, dass die Ganzzahl so verwendet wird, dass sie meine Indizes korrekt trifft.

Es gibt einen überraschenden Mangel an spezifischen Informationen über psycopg2 im Internet. Ich hoffe, jemand hat eine Antwort auf diese scheinbar einfache Frage.

Antwort

2

Per PEP 249, da in psycopg2 paramstyle ist pyformat, müssen Sie %(the_id)s auch für Nicht-Strings verwenden - vertrauen sie, das Richtige zu tun.

BTW, Internet-Suche wird besser funktionieren, wenn Sie die richtige Schreibweise verwenden (keine h dort), aber selbst wenn Sie falsch buchstabiert, bin ich überrascht, dass Sie nicht einen "did you mean" Hinweis (ich tat als ich es absichtlich versuchte!).

+0

Ich * hasse * vertrauen DB Fahrer das Richtige zu tun. Ich bin durch implizite Sybase-Datumskonvertierung fehlende Indizes zu oft gebissen worden. Ich denke, ich habe keine Wahl mit psycopg. Was die Schreibweise betrifft, so denke ich, dass das Gedankenbild der korrekten Schreibweise von Psycho alle Google-Vorschläge beherrscht - Danke für den Zeiger. –

Verwandte Themen