Python Skript kann keine Daten in mysql einfügen
Hallo Leute,
ich bin neu hier und hoffe ich mache alles richtig in meinem ersten Post.
Das Problem ist wie folgt:
Ich habe gestern 2 Raspis aufgesetzt einen mit Webserver und mariadb-Server, welchen ich über PHPmyadmin administriere.
Der andere hat den DHT22 Sensor dran und soll die erfassten Daten in den mysql Server speichern. Die Verbindung wurde erfolgreich hergestellt, ich habe den mysql-Server für externe Zugriffe freigegeben und auch den User freigegeben.
Das python Skript liefert auch keine Fehler zurück und führt alles aus. Nun sehe ich allerdings die Datensätze in der Tabelle meiner Datenbank nicht. Der einzige Hinweis, dass das Skript auch eine Verbindung mit dem mysql Server hatte ist, dass der primary key automatisch hochzählt. Das sehe ich wenn ich manuell über phpmyadmin ein Datensatz hinzufüge (spring nicht um 1 hoch sondern hat dann z.B. statt 4 auf 5 einen Sprung von 4 auf 9). Kann es sein, dass ich noch nicht alle Berechtigungen richtig für den Server eingerichtet habe?
Kennt Ihr das Problem und könnt mir eine Lösung verraten?
Bei weiteren Infos stehe ich euch zur Verfügung! Auch wenn Ihr noch den Quellcode benötigt stelle ich ihn gern zur Verfügung.
Viele Grüße
tzabbi
ich bin neu hier und hoffe ich mache alles richtig in meinem ersten Post.
Das Problem ist wie folgt:
Ich habe gestern 2 Raspis aufgesetzt einen mit Webserver und mariadb-Server, welchen ich über PHPmyadmin administriere.
Der andere hat den DHT22 Sensor dran und soll die erfassten Daten in den mysql Server speichern. Die Verbindung wurde erfolgreich hergestellt, ich habe den mysql-Server für externe Zugriffe freigegeben und auch den User freigegeben.
Das python Skript liefert auch keine Fehler zurück und führt alles aus. Nun sehe ich allerdings die Datensätze in der Tabelle meiner Datenbank nicht. Der einzige Hinweis, dass das Skript auch eine Verbindung mit dem mysql Server hatte ist, dass der primary key automatisch hochzählt. Das sehe ich wenn ich manuell über phpmyadmin ein Datensatz hinzufüge (spring nicht um 1 hoch sondern hat dann z.B. statt 4 auf 5 einen Sprung von 4 auf 9). Kann es sein, dass ich noch nicht alle Berechtigungen richtig für den Server eingerichtet habe?
Kennt Ihr das Problem und könnt mir eine Lösung verraten?
Bei weiteren Infos stehe ich euch zur Verfügung! Auch wenn Ihr noch den Quellcode benötigt stelle ich ihn gern zur Verfügung.
Viele Grüße
tzabbi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 372611
Url: https://administrator.de/contentid/372611
Ausgedruckt am: 17.11.2024 um 05:11 Uhr
7 Kommentare
Neuester Kommentar
@Arano will auf folgendes hinaus: Wie soll der Interpreter so zwischen Variable und String unterscheiden wenn du den Variablennamen innerhalb von Anführungszeichnen setzt??
Hiermit z.B. setzt du den Inhalt der Variablen an die richtige Stelle.
Oder eben auf die herkömmliche Verkettung mit +
Beachten solltest du natürlich auch wie die Zahlen sich manifestieren, mit Punkt oder Komma und was deine Datenbank hier erwartet.
Aber mal ehrlich, Stringmanipulationen sind doch Python Grundlagen der ersten Stunde ...
https://matthew-brett.github.io/teaching/string_formatting.html
Hiermit z.B. setzt du den Inhalt der Variablen an die richtige Stelle.
cursor.execute("INSERT INTO daten (sender_id, temperature, humidity) VALUES (1, {0}, {1})".format(temperature, humidity))
cursor.execute('INSERT INTO daten (sender_id, temperature, humidity) VALUES (1,' + temperature + ',' + humidity + ')')
Aber mal ehrlich, Stringmanipulationen sind doch Python Grundlagen der ersten Stunde ...
https://matthew-brett.github.io/teaching/string_formatting.html
Moin,
In deinem Query hast du ZWEIMAL den Begriff "temerature". Einmal als Feldnamen der DB-Tabelle und einmal als Python-Variable aber wie unterscheiden sie sich !?
Also du hättest gerne dass das 2.temperature als Variable interpretiert wird, weil es aber zwischen zwei doppelten Anführungezeichen steht IST es einfach nur ein Wort und dieses in dem erzeugten SQL-Query ist fehl am Platz !
Mach doch mal ein die Ausgabe wird sein:
Warum auch sollte das Erste "temperature" anders behandelt werden als das Zweite ?
https://pyformat.info/
"INSERT INTO `data` (`id`,`temperature`,`humidity`) VALUES (1,%f,%f)" % (temperature, humidity)
"INSERT INTO `data` (`id`,`temperature`,`humidity`) VALUES (1,{},{})".format(temperature, humidity)
Hey,
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysql ...
~Arano
Edit:
Na da habe ich mich wohl zu lange in den Handbüchern aufgehalten
Wie meinst du das in Anführungsstriche setzen?
Ich habe doch gar nichts von Anführungszeichen gesagt !?Es wird ja im Grunde keine Zeichenkette eingefügt sondern ein Double.
Nein, das ist was du gerne HÄTTEST ;)In deinem Query hast du ZWEIMAL den Begriff "temerature". Einmal als Feldnamen der DB-Tabelle und einmal als Python-Variable aber wie unterscheiden sie sich !?
Also du hättest gerne dass das 2.temperature als Variable interpretiert wird, weil es aber zwischen zwei doppelten Anführungezeichen steht IST es einfach nur ein Wort und dieses in dem erzeugten SQL-Query ist fehl am Platz !
Mach doch mal ein
print( "INSERT INTO daten (temperature) VALUES (temperature)" )
INSERT INTO daten (temperature) VALUES (temperature)
https://pyformat.info/
"INSERT INTO `data` (`id`,`temperature`,`humidity`) VALUES (1,%f,%f)" % (temperature, humidity)
"INSERT INTO `data` (`id`,`temperature`,`humidity`) VALUES (1,{},{})".format(temperature, humidity)
Hey,
cursor.execute()
kann das wohl auch von sich aus:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysql ...
cursor.execute(operation, params=None, multi=False)
~Arano
Edit:
Na da habe ich mich wohl zu lange in den Handbüchern aufgehalten