Seite 1 von 1

Problem mit Variablenvergleich

Verfasst: Dienstag 30. Mai 2006, 16:42
von KiS
Mein Problem sieht wie folgt aus:

Code: Alles auswählen

import os
import MySQLdb
verbindung=MySQLdb.connect(host='localhost',db='watchdog',user='root',passwd='test')
c=verbindung.cursor()
c.execute('USE watchdog')
while True:
    x=raw_input("Bitte Port eingeben:")
    print x

    anfrage4='''
    Select Death
    FROM watchdog
    WHERE Port='''+x
    c.execute(anfrage4)
    death=c.fetchone()[0]
    print death

While True:
       if ping == 0:
             i=0
             print i
             print 'ok'
Ich hol mir meine ganzen Daten die ich benötige von einer MySQL Datenbank. Zuerst frage ich mit x nach dem Port eines Servers. Anschließend mach ich eine Abfrage, die mir die Zahl death aus der Datenbank liefern soll. Dann ping ich den Server an. Die 0 steht dafür, dass es möglich war den Server anzupingen.
Das klappt auch alles. Nur jetzt kommt mein Problem und ich hoffe ihr könnt mir helfen :D Wenn der Server jetzt nicht angepingt werden konnte dann soll in der else-Anweisung folgendes passieren:

Code: Alles auswählen

       else:
             i=i+1
             print i
             if i == death:
                       print 'server wird erneut angepingt'
                       break
             else:
                       print 'server wurde angepingt'
                       continue
ich habe eine Variable i eingeführt, die den Anfangswert 0 hat und immer um eins erhöht wird. Das klappt auch noch nur mein Problem ist, dass er nicht die if-Anweisung i==death erkennt. Nur wenn ich death als fixe Zahl definiere dann funktioniert es. Nur in meinem Fall ist death variabel und kann jede Zahl annehmen. Als bitte kann mir wer helfen???

Edit (Leonidas): Titel geändert. *grml*

Re: PROBLEM, PROBLEM...

Verfasst: Dienstag 30. Mai 2006, 16:58
von DatenMetzgerX
Ich kenn mich mit DBs nicht so aus, aber wenn endet diese Schleife?

Code: Alles auswählen

while True:
    x=raw_input("Bitte Port eingeben:")
    print x

    anfrage4='''
    Select Death
    FROM watchdog
    WHERE Port='''+x
    c.execute(anfrage4)
    death=c.fetchone()[0]
    print death
True ist immer True :roll:

Verfasst: Dienstag 30. Mai 2006, 17:25
von KiS
die endet nie wenn du es genau wissen willst und das soll auch so sein. Aber der untere Teil gehört auch noch zum Programm dazu.

Re: PROBLEM, PROBLEM...

Verfasst: Dienstag 30. Mai 2006, 17:44
von gerold
KiS hat geschrieben:

Code: Alles auswählen

       else:
             i=i+1
             print i
             if i == death:
                       print 'server wird erneut angepingt'
                       break
             else:
                       print 'server wurde angepingt'
                       continue
[...]nur mein Problem ist, dass er nicht die if-Anweisung i==death erkennt.
Hi KiS!

death ist wahrscheinlich keine Zahl.
String und Zahl kannst du nicht miteinander vergleichen

Code: Alles auswählen

             print type(i)
             print type(death)
             if i == int(death):
mfg
Gerold
:-)

Re: PROBLEM, PROBLEM...

Verfasst: Dienstag 30. Mai 2006, 20:03
von Leonidas
KiS hat geschrieben:

Code: Alles auswählen

    anfrage4='''
    Select Death
    FROM watchdog
    WHERE Port='''+x
    c.execute(anfrage4)
Bitte, escape doch :idea:

Hat dir BlackJack übrigens ein, nein zwei Mal gesagt.

Eigentlich hat das BlackJack schon ganz oft gesagt: [1], [2], [3].

Btw: Gib dem armen Thread doch bitte einen sinnvollen Titel.

Verfasst: Dienstag 30. Mai 2006, 20:42
von KiS
Danke Leute. Ihr habt mir sehr geholfen. Jetzt funzt es. Thx :D

Verfasst: Dienstag 30. Mai 2006, 23:27
von Joghurt
Ich hoffe, du hast escaping eingebaut. Ansonsten freue ich mich schon, als Port

Code: Alles auswählen

42; DELETE FROM watchdog
anzugeben :twisted: