Arbeiten mit MySQL-boolsche Variablen in python
Ich bin der Abfrage einer MySQL-Datenbank in python und wählen Sie ein boolescher Wert, der-so die Antwort von MySQL ist entweder mit der Zeichenkette 'True' oder 'False'. Ich würde gerne weiter ausführen code auf der Basis von booleschen Wert aus MySQL.
E. g.
data = 'False' # assume this is what was returned by MySQL.
if data:
print 'Success' #really this would be where I would execute other if True.
else:
print 'Fail' #really this would be where I would execute other code if False
Aber ich kann das nicht, weil
if data:
wird immer True zurück
So, wie wandle ich den string MySQL ist die Rückkehr in ein boolean in python?
Derzeit habe ich:
data = 'False' # assume this is what was returned by MySQL.
if data == 'True':
print 'Success'
else:
print 'Fail'
Ich glaube, es muss einen besseren Weg, dies zu tun in python -- wahrscheinlich ist es etwas einfach, ich bin fehlt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Boolean in MySQL TINYINT(1). Prüfung für 1 oder 0 arbeiten könnte
Wenn die Spalte wird immer die tatsächlichen Zeichenfolgen
"False"
oder"True"
(im Gegensatz zu ganzen zahlen oder so etwas) dann würde ich empfehlen, einige Variationen auf:Wenn die db Verbindung nicht wissen, wie Sie zu transformieren die Werte für Sie, dann müssen Sie eine bessere. Das sollte nicht etwas sein, das müssen Sie selbst tun. Wenn diese nicht die tatsächlichen, booleans, aber nur eine int-Spalte, die Sie speichern nur 0 oder 1 an, dann sollten Sie fix Ihre schema. Alternativ, wenn man immer die Werte 'True' und 'False', vielleicht sind Sie versehentlich die Konvertierung in ein string irgendwo?
Können Sie den Platz finden, MySQLDdb wandelt die Werte in der converters.py Datei in die MySQLdb-Verzeichnis.
hier ist das snippet Umgang mit bool:
Und die Bool2Str Funktion:
Wenn Sie wollen, die sich anders Verhalten, importieren Sie die Konvertierungen dict und ändern Sie es.
Ihre Lösung ist eigentlich ganz OK, aber es gibt alternativen:
Wenn Sie mit Python 2.5 oder höher, können Sie verkürzen die if-Anweisung:
Wenn Sie finden, sich selbst zu wiederholen prüfen Sie Häufig, sollten Sie überlegen, das schreiben einer Funktion, für die es um Sie lesbarer zu machen:
Können Sie erreichen die gleiche Sache mit einem Wörterbuch, aber ich glaube nicht, dass dies so elegant:
Sagte, was Sie verwenden, um eine Verbindung zu der DB? Es ist wahrscheinlich ein Weg, um direkt ein boolescher Wert, der aus Ihr heraus. Bitte aktualisieren Sie Ihre Frage!
Können Sie
ord
der Rückgabewert eine Ganzzahl, die den Unicode.Beispiel:
Diese Griffe die Art und Weise es zurück durch MySQLdb.
Überprüft, das funktioniert für Python 3.6