Hilfe bei Datensätze aktualliesieren in eine MySQL DB
Verfasst: Freitag 15. April 2016, 05:58
Hallo zusammen,
wie man dem Betreff schon entnehmen kann, benötige ich eure Hilfe um meine Datensätzen die sich in einer MySQL DB befinden zu Aktualisieren.
Hierfür möchte ich eine xls-Datei einlesen und in der xls-Datei bestimmte spalten und Zeilen abfragen.
Allerdings bekomme ich immer eine Fehler Meldung die wie Folgt aussieht:
[Codebox=python file=Unbenannt.py]
File "DBschreiben.py", line 16
if cursor.execute("SELECT * FROM 'TESTDATENBANK'" WHERE 'TESTDATENBANK_seriennummer' == sheet.cell_value(row,4)) & sheet.cell_value(row,9) ==ok
^
SyntaxError: EOL while scanning string literal
[/Codebox]
ich hoffe ihr könnt mir an Hand meines Codes bei der Fehlermeldung helfen, da ich jetzt schon mehrere Sachen ausprobiert habe, aber denn Fehler nicht weg bekomme.
Hier mein Code:
[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='DGUV', passwd='DGUV-V3', db='TESTDATENBANK')
cursor = mysql.cursor()
daten = xlrd.open_workbook('/home/pi/EmailAnhang/Prüfergebnis.xml',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)
if cursor.execute("SELECT * FROM 'TESTDATENBANK'" WHERE 'TESTDATENBANK_seriennummer' == sheet.cell_value(row,4)) & sheet.cell_value(row,9) ==ok
letztepruefung = datetime.datetime.datetime (xlrd.xldate_as_tuple (sheet.cell_value(row,8), 0))
Naechstepruefung = datetime.datetime.datetime (xlrd.xldate_as_tuple (sheet.cell_value(row,8), 0)) + 2 years
cursor.close()
mysql.comit()
mysql.close()
[/Codebox]
Vielleicht Kurz zu meiner If-Bedingung falls sie unverständlich oder gar Falsch sein sollte eine kurze Erklärung:
Ich habe in meiner DB eine Spalte mit der Bezeichnung Seriennummer, und in meiner xls-Datei habe ich eine Spalte mit der Bezeichnung Idenntnummer und eine Spalte mit dem Bezeichner Prüfergebnis in der entweder ok oder falls steht.
Nun möchte ich überprüfen ob die Seriennumer mit der Identnummer übereinstimmt und das Prüfergebnis ok ist.
Sollte dies der Fall sein möchte ich in die Spalte letztepruefung in meiner DB den Wert aus meiner xls-Datei die in der Spalte Datum steht setzen und des weiteren möchte ich dann den Dateneintrag in der Spalte naechstepruefung um 2 Jahre höher setzen als das letztepruefungs-Datum.
Ich hoffe Ihr könnt mir bei meinem Problem helfen und bedanke mich recht herzlich im voraus
wie man dem Betreff schon entnehmen kann, benötige ich eure Hilfe um meine Datensätzen die sich in einer MySQL DB befinden zu Aktualisieren.
Hierfür möchte ich eine xls-Datei einlesen und in der xls-Datei bestimmte spalten und Zeilen abfragen.
Allerdings bekomme ich immer eine Fehler Meldung die wie Folgt aussieht:
[Codebox=python file=Unbenannt.py]
File "DBschreiben.py", line 16
if cursor.execute("SELECT * FROM 'TESTDATENBANK'" WHERE 'TESTDATENBANK_seriennummer' == sheet.cell_value(row,4)) & sheet.cell_value(row,9) ==ok
^
SyntaxError: EOL while scanning string literal
[/Codebox]
ich hoffe ihr könnt mir an Hand meines Codes bei der Fehlermeldung helfen, da ich jetzt schon mehrere Sachen ausprobiert habe, aber denn Fehler nicht weg bekomme.
Hier mein Code:
[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='DGUV', passwd='DGUV-V3', db='TESTDATENBANK')
cursor = mysql.cursor()
daten = xlrd.open_workbook('/home/pi/EmailAnhang/Prüfergebnis.xml',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)
if cursor.execute("SELECT * FROM 'TESTDATENBANK'" WHERE 'TESTDATENBANK_seriennummer' == sheet.cell_value(row,4)) & sheet.cell_value(row,9) ==ok
letztepruefung = datetime.datetime.datetime (xlrd.xldate_as_tuple (sheet.cell_value(row,8), 0))
Naechstepruefung = datetime.datetime.datetime (xlrd.xldate_as_tuple (sheet.cell_value(row,8), 0)) + 2 years
cursor.close()
mysql.comit()
mysql.close()
[/Codebox]
Vielleicht Kurz zu meiner If-Bedingung falls sie unverständlich oder gar Falsch sein sollte eine kurze Erklärung:
Ich habe in meiner DB eine Spalte mit der Bezeichnung Seriennummer, und in meiner xls-Datei habe ich eine Spalte mit der Bezeichnung Idenntnummer und eine Spalte mit dem Bezeichner Prüfergebnis in der entweder ok oder falls steht.
Nun möchte ich überprüfen ob die Seriennumer mit der Identnummer übereinstimmt und das Prüfergebnis ok ist.
Sollte dies der Fall sein möchte ich in die Spalte letztepruefung in meiner DB den Wert aus meiner xls-Datei die in der Spalte Datum steht setzen und des weiteren möchte ich dann den Dateneintrag in der Spalte naechstepruefung um 2 Jahre höher setzen als das letztepruefungs-Datum.
Ich hoffe Ihr könnt mir bei meinem Problem helfen und bedanke mich recht herzlich im voraus