Mysql abfrage von tinyint(1)

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
redtop
User
Beiträge: 5
Registriert: Freitag 8. Januar 2010, 10:27

Hallo,

ich bin absoluit kein Programierer aber übe mal etwas :) Als verzeiht mir meine dummen Fragen.

Ich hab schon gesucht aber ich komme nicht weiter, wahrscheinlich ist das Problem so trivial das ich es einfach über sehe.

Ich habe eine Mysql Tabelle mit verschiedenen Werten, unter anderen auch ein tinyint (Bool) Feld.
Wenn ich nun die Datenbank abfrage erhalte ich vom tinyint Feld den Namen und von den anderen Feldern den Inhalt.

Ich will aber auch vom tinyint den Wert True/False oder als 0/1 haben.

So sieht mein Beispiel aus :

Code: Alles auswählen


myconn = MySQLdb.connect(host = "localserver", user ="test" ,  db = "test")     # mit der Datenbank verbinden
cursor = myconn.cursor()
SELECT = "SELECT `Vorname`, `Nachname`, 'MwSt' FROM Kundendatei WHERE `MwSt`= 0 "
cursor.execute(SELECT)
Tabelle = cursor.fetchone()
    
print "SHOW",  Tabelle,  Tabelle[0], Tabelle[1], Tabelle[2],  bool(Tabelle[2])

cursor.close()                      
myconn.close()

Als Ausgabe bekomme ich :
SHOW ('Harald', 'Tester', 'MwSt') Harald Tester MwSt True
Das tinyint Feld "MwSt" ist aber 0 also False ?

Wo mache ich den Fehler.

Stefan[/code]
redtop
User
Beiträge: 5
Registriert: Freitag 8. Januar 2010, 10:27

Hat sich erledigt ich hatte, warum auch immer bei MwSt die falschen Anführungszeichen verwendet.

Man ist das kleinlich :)

Stefan
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

redtop hat geschrieben:Hat sich erledigt ich hatte, warum auch immer bei MwSt die falschen Anführungszeichen verwendet.

Man ist das kleinlich :)
Ich wußte gar nicht, dass man überhaupt Anführungszeichen um Spaltennamen setzen muss... lass sie doch einfach weg ;-)
redtop
User
Beiträge: 5
Registriert: Freitag 8. Januar 2010, 10:27

Nee ne,

Ich habe die Syntax aus myMysqlAdmin übenommen und deswegen hatte die gesetzt. :oops:

Stefan
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Gibt's mit mysqldb keine Möglichkeit, parametrisierte Queries zu erstellen? So ist das ja eine Einladung für SQL-Injections.
redtop
User
Beiträge: 5
Registriert: Freitag 8. Januar 2010, 10:27

Wieso ?

Ist doch nur eine Abfrage, die aus einer Liste generiert wird.

Gruss Stefan
glaslos
User
Beiträge: 23
Registriert: Donnerstag 12. Februar 2009, 18:55
Kontaktdaten:

Es geht, ist aber in dem Fall nicht notwendig. Ich mache es aber trotzdem immer um es nicht irgend wann zu vergessen :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
redtop
User
Beiträge: 5
Registriert: Freitag 8. Januar 2010, 10:27

mkesper hat geschrieben:Gibt's mit mysqldb keine Möglichkeit, parametrisierte Queries zu erstellen? So ist das ja eine Einladung für SQL-Injections.
Das war auch nur ein Beispiel. Dewr richtige Code sieht dann anders aus und ich verwende Parametrisierte SQL-Queries.
z.B so :

Code: Alles auswählen

        SELECT = "SELECT * FROM %s " %Auswahl
        print "SELECT",  SELECT
        self.c.execute(SELECT)
        Test = self.s.fetchone(SELECT)
        print "Test",  Test
        for row in iter(self.c.fetchone, None):
               
            for index in range (0, 3):
                count = self.c.rownumber -1
                id = str(row[0])
                self.list_ctrl_db.SetStringItem(count, 0, id)
                self.list_ctrl_db.SetStringItem(count, 1, row[2])
                self.list_ctrl_db.SetStringItem(count, 2, row[1])
Ich hoffe es stehen jetzt keinem die Haare zu Berge, wenn er sieht was ich hier zusammen hacke :oops:

Gruss Stefan
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Ich habe deshalb gefragt, weil es mir aus der Doku von mysqldb nicht gleich ins Auge sprang. Danke für den Wiki-Link!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

redtop hat geschrieben:Das war auch nur ein Beispiel. Dewr richtige Code sieht dann anders aus und ich verwende Parametrisierte SQL-Queries.
z.B so :

Code: Alles auswählen

        SELECT = "SELECT * FROM %s " %Auswahl
        print "SELECT",  SELECT
        self.c.execute(SELECT)
Das ist aber falsch! Es ist nur eine normale String Operation, siehe: http://wiki.python-forum.de/String-Formatter

Bei execute müßten die Parameter übergeben werden!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Das ist schon richtig, denn mit parametrisierten SQL-Anfragen kann man nur *Werte* einsetzen, keine Tabellennamen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ups, das hab ich übersehen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten