Hallo zusammen,

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