SQL Abfrage und regulare Expression

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Hallo!

Ich habe folgende Datenbank mit sqlite generiert:

Tabelle:
annotation
Spalten:
project_name
picture_name
haustoria_anno

Ein Beispiel sehe so aus:

Project1
01A_002_01.jpg
True

Project1
01B_004_01.jpg
False

Project1
03A_008_01.jpg
False

Project2
03A_004_01.jpg
False

Jetzt würd ich gerne folgende Abfrage machen:

Alle „picture_name“ und „haustoria_anno“ mit dem „project_name“ Project1.

Ok, das ist einfach und funktioniert auch:
"""SELECT haustoria_anno, picture_name FROM annotation
WHERE project_name = ?""",
(project)

Jetzt würde ich gerne alle „True“ der „haustoria_anno“ Zählen, wenn die Ziffern der „picture_name“ vorm ersten Unterstrich-1 (also A und B wird ignoriert) die gleichen sind. Hier mal ein Beispiel was ich meine:

Für Project1 müsste folgendes rauskommen:
Project1, 01, 1
Project1, 03, 0

weil die „picture_name“ mit Ziffern 01 zusammengefasst werden und ein True gezählt wurde. 03 gibt es nur einmal und es gibt kein True, also 0.

Würdet ihr die zweite Abfrage auch über SQL (regulare Expression) machen oder die Daten aus der ersten Abfrage zwischen speichern und über pure Python auswerten (Dict o.ä.)?

Danke für jeden Tip!
Stefanie

P.S. ich hoffe es ist verständlich erklärt :roll:
http://www.snowflake-sl.info/index.html
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Über welche Menge an Datensätzen, die zu erwarten sind, sprechen wir denn hier?
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Momentan an die 50 Projekte mit à ca. 10.000 picture_names. Stätig steigend (open end)
http://www.snowflake-sl.info/index.html
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

'picture_name' ist also in Wirklichkeit kein Name, sondern ein Zusammenschluss aus Einzelinformationen. Du willst auf diesen Einzelinformationen arbeiten, also warum speicherst du sie nicht auch in einzelne Spalten?

Wenn du reguläre Ausdrücke auf Datenbanken los lassen musst (oder etwas anders tust, das eine Laufzeit von O(n) hat) machst du etwas falsch.
Bottle: Micro Web Framework + Development Blog
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

"picture_name" ist schon ein Dateiname aber für den Output brauche ich nur die Ziffern vor dem ersten Unterstrich. Aber du hast recht, ich könnte noch ein zusätzlich Spalte nur mit den bennötigten Ziffern erstellen.
http://www.snowflake-sl.info/index.html
Antworten