Hallo zusammen,

da ich in mrunix.de keinerlei Anworte erhalte, probiere ich es hier nochmal und führe, sofern es ein längerer Thread wird, diesen hier weiter.

Ich habe da ein paar Erklärungsbedürfnisse zum Umgang mit Variablen in Python bzw. das Verarbeiten in Mysql.

Ich lese Daten aus einem Textfile ein:
Code:
with open(/pfad/zur/datei) as file:
    for _ in range(53):
        file.readline()
    daten = '%.1f' % float(file.readline()[6:])
    file.close()
Die relevanten Daten sind in Zeile 53 der Datei zu finden.

Frage 1: Welchen Typ hat nun die Variable "daten"?

Wenn der Wert eine bestimmte Grenze überschreitet, ist er unplausibel und ich möchte "NULL" in die Datenbank schreiben. Dazu prüfe ich:
Code:
    if daten > grenze:
        daten = None
Frage 2: Wenn nun diese Bedingung erfüllt wird und daten auf "None" gesetzt wird, von welchem Typ ist dann "daten"?

Nun möchte ich den ausgelesenen Wert in eine mysql-Datenbank schreiben.
Dazu verwende ich:
Code:
cursor = db_connection.cursor()
cursor.execute(
    """insert into datenbank set daten='%s'  ON DUPLICATE KEY UPDATE daten='%s''""", float(daten))
(Der Code ist unvollständig und möglicherweise funktioniert es so auch nicht, aber es geht mir um das prinipielle Verständnis beim Einfügen.

Fall 1: Meine Daten waren plausibel, also nicht leer, dann muss ich in die Spalte der Datenbank ein Float einfügen, was ich mit float(daten) erreiche.

Frage 3: Was hat es mit dem '%s' auf sich?
Frage 4: Was ist der Unterschied zu %s, also ohne die Hochkommata?

Fall 2: Waren die eingelesenen Werte unplausibel, so ist ja jetzt die Variable daten leer. Jetzt funktioniert mein "insert" nicht mehr, die Fehlermeldung:
Code:
TypeError: float() argument must be a string or a number, not 'NoneType'
sagt mir, dass ich hier einen Typenkonflikt habe.

Wie macht man das richtig?
Danke für Erläuterungen

michel_vaclav