2016-09-02 3 views
0

Wie würde man eine ganze Spalte in SQLite-Datenbank für einen bestimmten Wert überprüfen und wenn eine Variable auf truePython Überprüfung SQL-Datenbank-Spalte für Wert

so etwas wie

hasvalue = 'false' 

cur = con.cursor() 
cur.execute("SELECT id FROM column WHERE hasvalue = '1' LIMIT 1;") 
***IF execute returned rows set hasvalue = true here*** 

if hasvalue == 'true': 
    do something 
else: 
    dosomethingelse 

gesetzt gefunden Wie würde ich HasValue machen wird zu "true", wenn die SQL-Abfrage mit etwas zurückgegeben wird und wenn sie 0 Zeilen zurückgibt, bleibt falsch?

Grundsätzlich möchte ich etwas, das nur ausführen, wenn etwas in einer Spalte gleich 1

+0

Also Sie wollen es mit Python tun oder tun Sie es mit SQL Coz gute SQL-QUerry kann es auch tun. –

+0

Python, da ich nur Code ausführen möchte, wenn die Datenbank für meine Suche true zurückgibt –

+0

So erstellen Sie eine ordnungsgemäße SQL wie: 'SELECT 1 FROM WHERE = ;' Jetzt benutze nur ** fetch ** und wenn es Null Zeilen mit diesem Wert gibt, bekommst du NULL zurück und 1 sonst –

Antwort

0

Ich bin ein wenig verwirrt durch Ihre Frage. Die SQL-Abfrage schlägt vor, dass Sie eine Tabelle mit dem Namen column verwenden? Wenn ich das ignorieren kann und nehme an, Sie haben eine Tabelle mit dem Namen test, die Spalten id (ein int) und name (eine Zeichenfolge) hat. Dann wird die Abfrage:

SELECT id FROM test where name = 'something' 

würden alle Zeilen auswählen, die name Satz auf den String 'something' haben.

In Python dies wäre:

cur = con.cursor() 
cur.execute("SELECT id FROM test where name = 'something' LIMIT 1") 

if cur.fetchone(): 
    do_something() 
else: 
    do_something_else() 

Der Schlüssel hier ist cursor.fetchone() zu verwenden, die eine Zeile aus dem Cursor wird versuchen, und abzurufen. Wenn keine Zeilen vorhanden sind, gibt None zurück und None wertet False aus, wenn es als Bedingung in einer if-Anweisung verwendet wird.

Sie könnten eine Funktion erstellen, zu verallgemeinern:

def has_value(cursor, table, column, value): 
    query = 'SELECT 1 from {} WHERE {} = ? LIMIT 1'.format(table, column) 
    return cursor.execute(query, (value,)).fetchone() is not None 

if has_value(cur, 'test', 'name', 'Ranga'): 
    do_something() 
else: 
    do_something_else() 

Dieser Code erstellt eine Abfrage für die angegebene Tabelle, Spalte und Wert und gibt True, wenn mindestens eine Zeile mit dem gewünschten Wert ist, ist es anders gibt False zurück.

+0

wenn nicht cur.fetchone() genau das ist, wonach ich suche. Vielen Dank für die ausführliche Erklärung! –

Verwandte Themen