Hilfe bei Datensätze aktualliesieren in eine MySQL DB
@Sirius könntest du mir dafür mal ein Beispiel zeigen und oder den Link zur Dokumentation geben, da ich das nun versucht habe einzubauen und immer noch den selben Fehler bekommeSirius3 hat geschrieben:@DGUV-V3: wie Du aus der Dokumentation entnehmen kannst ist der Platzhalter für MySQLDB %s.
@DGUV-V3: jetzt müßte ich wieder wissen, was Du genau gemacht hast und wie der Fehler incl. Traceback genau aussieht. Diesmal vielleicht der passende Code zum Fehler, der auch wirklich bei Dir gelaufen ist. Wie hast Du bisher programmiert, wenn Du nicht die Dokumentation zu den von Dir verwendeten Module kennst?
Hier meine Fehlermeldung:Sirius3 hat geschrieben:@DGUV-V3: jetzt müßte ich wieder wissen, was Du genau gemacht hast und wie der Fehler incl. Traceback genau aussieht. Diesmal vielleicht der passende Code zum Fehler, der auch wirklich bei Dir gelaufen ist. Wie hast Du bisher programmiert, wenn Du nicht die Dokumentation zu den von Dir verwendeten Module kennst?
Traceback (most recent call last):
File "DBschreiben.py", line 16, in <module>
cursor.execute('UPDATE testdb set letztepruefung = :sheet.cell_value(row,8), %s), naechstepruefung = DATE_ADD(:sheet.cell_value(row,8), 0), Interval 2 Years) WHERE seriennummer =:sheet.cell_value(row,4), 0') and ':sheet.cell_value(row,9), 0) = OK) VALUES (%s,%s)'
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':sheet.cell_value(row,8), %s), naechstepruefung = DATE_ADD(:sheet.cell_value(row' at line 1")
und Hier der Code dazu:
[Codebox=python file=Unbenannt.py]
#!/usr/bin/env python
# -*- coding: utf8 -*-
import xlrd
import datetime
import MySQLdb
_encoding = 'utf-8'
mysql = MySQLdb.connect(host='localhost', user='root', passwd='xy', db='testdb')
cursor = mysql.cursor()
daten = xlrd.open_workbook('Test.xls',formatting_info=True)
query = """Insert Into orders (seriennummer, klassifikation, region, sc, betirebsart, hnr, liegenschaft, gebaeude, etage, raum, verantwortlicher, eib, letzepruefung, naechstepruefung) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,) """
sheet = daten.sheet_by_index(0)
for row in range (sheet.nrows):
cursor.execute('UPDATE testdb set letztepruefung = :sheet.cell_value(row,8), 0), naechstepruefung = DATE_ADD(:sheet.cell_value(row,8), 0), Interval 2 Years) WHERE seriennummer =:sheet.cell_vallue(row,4),0') and ':sheet.cell_value(row,9), 0) = OK) Values (%s,%s)'
cursor.close()
mysql.comit()
mysql.close()
[/Codebox]
@DGUV-V3: Das ist immer noch der gleiche Fehler wie vorhin. Lern Python und lern SQL. Sonst wird das nichts. Es sei denn jemand anders hier schreibt wieder ein weiteres Stück Code um der Lösung *Deines* Problems näher zu kommen.
@DGUV-V3: nochmal Schritt für Schritt.
Erst dachte ich, der Code kann ja gar nicht laufen, weil eine Klammer zu fehlt, aber mit Syntaxhighlighting kam ich dann drauf. Was bitteschön glaubst Du was das "and" in der Zeile
macht?
Was glaubst Du sind in dieser SQL-Anweisung Platzhalter? Und was ist an dem Satz: "man kann nicht einfach Pythoncode in ein SQL-Statement einflechten. Du mußt Platzhalter verwenden." unverständlich? Und wie viele Klammern haben keinen Partner?
Erst dachte ich, der Code kann ja gar nicht laufen, weil eine Klammer zu fehlt, aber mit Syntaxhighlighting kam ich dann drauf. Was bitteschön glaubst Du was das "and" in der Zeile
Code: Alles auswählen
cursor.execute('UPDATE testdb set letztepruefung = :sheet.cell_value(row,8), 0), naechstepruefung = DATE_ADD(:sheet.cell_value(row,8), 0), Interval 2 Years) WHERE seriennummer =:sheet.cell_vallue(row,4),0') and ':sheet.cell_value(row,9), 0) = OK) Values (%s,%s)'
Was glaubst Du sind in dieser SQL-Anweisung Platzhalter? Und was ist an dem Satz: "man kann nicht einfach Pythoncode in ein SQL-Statement einflechten. Du mußt Platzhalter verwenden." unverständlich? Und wie viele Klammern haben keinen Partner?