Seite 1 von 1
Anzahl der Ergebnisse
Verfasst: Dienstag 19. Januar 2010, 23:04
von jovica.aleksic
Hallo!
Eine Einsteigerfrage:
Wie bekomme ich auf einfachste Weise die Anzahl der Ergebnisse bei einem Aufruf wie
Code: Alles auswählen
cursor.execute('select * from Users where email=?', (mail_addr,))
Ich möchte im Grunde überprüfen, ob ein Eintrag mit gegebener Emailadresse existiert oder nicht, folglich ob ich gar kein Ergebnis oder eben eines (oder gar mehrere) bekomme.
Ich verstehe dass man den cursor zum Durchiterieren nutzen kann, und ich könnte folglich eine Variable auf 0 setzen, dann durch alle Ergebnisse iterieren und die Variable hochzählen lassen, hinterher wüsste ich die Anzahl der Ergebnisse. Aber das muss ja sicherlich auch einfacher gehen?
Verfasst: Dienstag 19. Januar 2010, 23:10
von EyDu
Hallo!
Da solltest du wohl noch einmal das Tutorial lesen.
Verfasst: Dienstag 19. Januar 2010, 23:30
von Hyperion
Ich würd auch nen
count(spalte) nehmen, anstatt ein
select * 
Wozu die 100000 Emails-Adressen plus andere Attribute zurückliefern lassen, die man nicht braucht?
Verfasst: Dienstag 19. Januar 2010, 23:32
von jovica.aleksic
Danke!
Tutorial........schaue ich mir ständig an, hier und dort, aber ich bin nicht jemand der sowas von A bis Z lesen kann, persönliches Manko. Jeder lernt anders, und ich könnte zB statt SVN zu nutzen immernoch das Tutorial lesen

Oder eben PHP, ActionScript etc..
Bitte nicht böse sein bei dummen Fragen, man kann ja zB auch eine Antwort verweigern wenn einem die Frage nicht einer fairen Antwort würdig erscheint.
Btw, war über
gestolpert - sollte das auch das gewünschte Ergebnis liefern? ...Ach naja, teste ich sobald ein paar Daten in der DB stecken.
Verfasst: Dienstag 19. Januar 2010, 23:59
von Hyperion
Wieso nicht ein einfaches?
Code: Alles auswählen
select count(email)
from tabelle
where email='irgend eine mail adresse';
Worin siehst Du den "Vorteil" von "select *" und dem Abfragen der Ergebnis-Länge?
Verfasst: Mittwoch 20. Januar 2010, 00:29
von jovica.aleksic
Ich sehe gar keinen Vorteil, sondern bin einfach komplett ahnungslos

Ich bin an sich Frontend-Entwickler, und immer gab es einen PHP/SQL Experten an meiner Seite.
Hatte das in deiner ersten Antwort nicht ganz verstanden... Werde das Ganze morgen testen, jetzt ist erstmal bettzeit angesagt

Aber danke für das wiederholte Nachhaken, weiß das zu schätzen!
Verfasst: Mittwoch 20. Januar 2010, 12:43
von noisefloor
Hallo,
es gibt halt zwei Möglichkeiten:
Wenn man es wie du macht ('SELECT * ...'), dann musst du auf Vorhandensein eines Ergebnisses prüfen. Weil wenn keine Mail-Adresse existiert, dann liefert SQL NULL zurück, was AFAIK die DBAPI in Python's None umwandelt.
Also:
Code: Alles auswählen
cursor.execute("SELECT * FROM tabelle WHERE email LIKE 'foorbar'")
ergebnis = cursor.fetchall()
if not ergebnis:
print 'Keine E-Mail'
Wenn du count nimmt, dann kommt als Ergebnis nie NULL zurück, sondern immer eine Zahl, ggf. 0.
Code: Alles auswählen
cursor.execute("SELECT count(irgendwas) FROM tabelle WHERE email LIKE 'foorbar'")
ergebnis = cursor.fetchall()
if ergebnis == 0:
print 'Keine E-Mail'
Gruß, noisefloor
Verfasst: Mittwoch 20. Januar 2010, 12:58
von BlackJack
@noisefloor: Ohne jetzt nachgeschaut zu haben dürfte `fetchall()` eine leere Liste liefern, wenn keine Datensätze da sind. `None` wäre eine ziemlich blöde Idee.
Verfasst: Mittwoch 20. Januar 2010, 16:06
von noisefloor
Hallo,
BlackJack hat geschrieben:@noisefloor: Ohne jetzt nachgeschaut zu haben dürfte `fetchall()` eine leere Liste liefern, wenn keine Datensätze da sind. `None` wäre eine ziemlich blöde Idee.
Es wird in der Tat eine leere Liste geliefert. Aber: es funktioniert. Gerade ausprobiert.
Gruß, noisefloor