Ich erstellte eine Datenbank mit Spalte namens Option, wobei der Wert ein Varchar von "Call", "Put" oder None ist. Als ich die Datenbank eingerichtet habe, habe ich den Standardwert None gesetzt, wenn es keinen Call oder Put gegeben hat.PSQL - Wie herauszufiltern, wenn ein Spaltenwert einer bestimmten Zeichenfolge
Ich versuche, die Zeilen herauszufiltern, die "Call" oder "Put" als Option enthalten. ! Aber wenn ich schreibe die Abfrage
SELECT * FROM Betriebe h WHERE h.option = 'Call' UND h.option = 'Put';
I get this error:
curr.execute('SELECT option FROM holdings WHERE option != 'Call';')
^
SyntaxError: invalid syntax
Wenn ich versuche zu verwenden NOT LIKE '% Anruf%' bekomme ich diesen Fehler:
curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE '%Call%';')
NameError: name 'Call' is not defined
Jede mögliche Hilfe
Dank geschätzt!
-Code sieht wie folgt aus:
import psycopg2
import csv
conn = psycopg2.connect('dbname = db user = asmith')
curr = conn.cursor()
curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')
tups = curr.fetchall()
for tup in tups:
print tup
Edit: Wenn ich laufen diese beiden Zeilen:
curr.execute('SELECT * FROM holdings h WHERE option = \'Call\' OR option = \'Put\';')
curr.execute('SELECT * FROM holdings h WHERE option != \'Call\' AND option != \'Put\';')
Die erste Abfrage gibt mir alle Zeilen mit einer Call- oder Put, aber wenn ich Bei der zweiten Abfrage bekomme ich nichts, obwohl es mir theoretisch alle Zeilen mit der Option None geben sollte. Weiß jemand, warum das so ist?
können Sie den tatsächlichen Fehler einfügen? Das^zeigt auf das Zeichen mit dem Problem. – Mox
Bitte fügen Sie die ganze Zeile Ihres Codes ein. Die SQL-Syntax ist in Ordnung. Ich denke, es gibt ein Problem an anderer Stelle - vielleicht verwenden Sie auch einfache Anführungszeichen außerhalb der Abfrage? Vielleicht versuchen wie: curr.execute ("SELECT Option ....! = 'Call' –
jetzt Ihre Frage ist viel klarer. – Mox