Seite 1 von 1

mysql: daten werden nicht eingefügt

Verfasst: Freitag 24. April 2020, 21:25
von nieselfriem
Hallo,

ich versuche gerade mit einem Multi-Insertbefehl Daten in eine Tabelle einfügen. Doch leider werden die Daten nicht eingefügt oder eine Fehlermeldung ausgegeben. das SQL-Statement ist ein kleiner Teil des Statements. Was mache ich hier falsch?

Code: Alles auswählen

def insertVariblesIntoTable():
    sql = get_sql_queries()
    sql = """INSERT INTO `avg_day_temps` (`id`, `temperatur1`, `temperatur2`, `datum`) VALUES(1,'18.11','11.82','2020-03-30'),
(2,'18.11','11.82','2020-03-30')
"""
    try:
        connection = mysql.connector.connect(host='localhost',
                                             database='temperatur_garten_test',
                                             user='root',
                                             password='')
        cursor = connection.cursor()
        cursor.execute(sql, multi=True)
        connection.commit()
    except mysql.connector.Error as error:
        print("Failed to insert into MySQL table {}".format(error))

insertVariblesIntoTable()
VG Georg

Re: mysql: daten werden nicht eingefügt

Verfasst: Freitag 24. April 2020, 21:49
von __deets__
Ich müsste nachlesen, aber aus dem dem Bauch: einfach Tupel Anhängen ist nicht. Das muss schon jedes Mal ein vollständiges SQL Statement sein.

Re: mysql: daten werden nicht eingefügt

Verfasst: Freitag 24. April 2020, 21:53
von __blackjack__
Und dann stellt sich die Frage warum dieser nicht-standard-Weg und nicht `executemany()`?

Re: mysql: daten werden nicht eingefügt

Verfasst: Samstag 25. April 2020, 08:13
von nieselfriem
ich habe jetzt ein paar sachen geändert,

Da Query habe ich mal verändert und bei beiden Einträgen ein vollständiges Query erstellt. Was mich nur irritiert, dass jedes mal KEINE Fehlermeldung kommt. Ich würde gerne mal sehen wollen, was er für ein Problem hat. Ich habe mal eine Spalte im Query falsch geschrieben, dennoch spuckt er keine Fehler aus. Da sirritiert mich etwas. Ic habe schon mit PonyORM gearbeitet, dort wird man so etwas von Zugeschwallt mit Exceptions. Hier aber scheine ich mich echt zu doof anzustellen.

Es wird weder der Eintrag gemacht noch ein Fehler geworfen.

In diesem Query ist die erste Spalte falsch geschrieben statt temperatur1 habe ich temperdatur1 geschreiben. Dennoch wird keine Fehlermeldung ausgeworfen

Code: Alles auswählen

  sql = """INSERT INTO `avg_day_temps` (`id`, `temperdatur1`, `temperatur2`, `datum`) VALUES(1,'18.11','11.82','2020-03-30');
INSERT INTO `avg_day_temps` VALUES (2,'18.11','11.82','2020-03-30');
"""

Re: mysql: daten werden nicht eingefügt

Verfasst: Samstag 25. April 2020, 15:13
von Sirius3
Ich hab kein mysql um das Testen zu können, aber andere Datenbanken liefern erwartungsgemäß Exceptions.

Funktionsnamen schreibt man wie Variablen klein_mit_unterstrich. Mit dem Rückgabewert von `get_sql_queries` wird gar nichts gemacht. Auch bei Tabellennamen sind Abkürzungen tabu. Es stört niemanden, wenn man das ausschreibt: `average_day_temperatures`. `id`s werden normalerweise automatisch erzeugt. Temperaturen sollten Zahlen sein, und keine Strings. Für Datum gilt eigentlich das selbe.
Um es nochmal zu sagen, korrekt ist executemany.

Code: Alles auswählen

values = [
    (18.11, 11.82, '2020-03-30'),
    (17.43, 10.21, '2020-03-31')
]
cursor.executemany("INSERT INTO average_day_temperatures (temperatur1, temperatur2, datum) VALUES (%s, %s, %s)", values)