2016-06-10 7 views
1

Ich versuche, eine Abfrage in Python zu bauen, ich bin auf der Suche nach einem eleganten Weg, um eine WHERE-Bedingung in der Mitte eines Zeichenfolge anhang:Anfügen Zeichenfolge in der Mitte einer Abfrage in Python

def get_raw_queryset(frequency=None, where_condition=None): 
    qs = "SELECT id, COUNT(*) AS count FROM user_transaction_log " \ 
     # I WANT TO APPEND A WHERE ONLY IF not None 
     if where_condition: 
      "WHERE .... = 1" \ 
     "GROUP BY type , strftime('{0}', datetime) ORDER BY id" \ 
     .format(frequency) 
    return qs 

Antwort

4

Dies wird so lange arbeiten, wie Sie sicher den WHERE-String selbst wenn where_condition ist keine String auswerten können:

"SELECT ..." + bool(where_condition) * ("WHERE ...") + "GROUP ..." 

ich hoffe, Sie extrem vorsichtig zu SQL-Injection zu vermeiden.

+0

Ich benutze Django und das ist eine Funktion auf meinem Backend. Sollte ich mir Sorgen machen? –

+0

@GustavoReyes hängt davon ab, ob Benutzereingaben verwendet werden, um diese Bedingung zu erstellen. –

+0

Dann geht es uns gut :) –

Verwandte Themen