Abfrage SQLite-Datenbank mit Liste

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
NewPython19

Hallo,

ich habe eine SQLite-Datenbank mit einer Tabelle, welches aus vier Datenfeldern besteht.
Bei meiner Recherche zu SQLite bin ich auf den Operator "IN" gestoßen.
Wenn ich diesen Operator richtig verstanden habe, ermöglicht er das durchsuchen von Listen.
Ich habe probiert den Operator anzuwenden:

Code: Alles auswählen

("SELECT Date FROM Table WHERE Date IN (?)", (DateList,))
Ich wollte fragen, ob ich den Operator falsch anwende bzw. falsch verstanden habe.
Und wenn ja, wäre ein Tipp für die korrekte Anwendung super!
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@NewPython19: Der SQL-Vergleichsoperator IN ermöglicht das vergleichen/den Test auf enthalten sein in einer festen Anzahl gegebener Werte. Was Du da versuchst ist eine Python-Liste als *einen* Wert für *einen* Platzhalter einzusetzen. Das geht so nicht. Es muss für jeden Wert einen Platzhalter geben. Also so etwas wie

Code: Alles auswählen

    cursor.execute(
        f"SELECT date FROM table WHERE date IN ({','.join('?' * len(dates))})",
        dates,
    )
Ich persönlich mag ja SQLAlchemy, unter anderem, damit man nicht solchen Code schreiben muss.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
NewPython19

Achso! Vielen Dank für die Antwort!
Antworten