def abfrage():
sql = "SELECT servername, sw_producer, enddate, comment, email FROM software s, notify n, users u WHERE s.rowid=software_id AND users_id=id_users AND enddate > date('now', '+90days')"
cur = conn.cursor()
cur.execute(sql)
data = cur.execute(sql)
if (data is not 'NULL'):
item = 0
for item in data:
print item[2]
print item[3]
print item[4]
datum = item[2]
mess = item[3]
mailad =item[4]
return (mailad, mess, datum)
abfrage()
def versenden(mailad,mess,datum):
Email(
from_address = "SLiMS Datenbank",
to_address = mailad,
subject = "Lizenz Erneuerung",
message = "Sehr geehrte Damen und Herren ! \n\nIhre Software mit der Bezeichnung " + mess + " laeuft am " +datum + " ab.\nBitte verstaendigen Sie Ihren Administrator.\n\nIhre SLiMS Datenbank "
).send()
mailad,mess,datum = abfrage()
versenden(mailad,mess,datum)
Wenn nur eine Software Lizenz abläuft ist es kein Problem es wird eine Email ausgelesen eine Message und das Datum, was kann ich aber machen wenn ich zwei Mailadressen bekomme und 2 Mails versenden muss?
Aber zunächst einmal ein Verständnisproblem: Wie / wo sollen denn 2 Emailadressen "zurückkommen"? Was genau kann denn in dem Feld "email" in der DB stehen? (Wobei es selbst bei Nicht-Atomarität kein problem sein sollte!)
Außerdem führst du das execute 2x aus ... imho sinnlos.
Ich bin nicht der Oberprogrammierer, für mich ist in erster Linie wichtig das es funktioniert
Natürlich bin ich gegenüber besserer Codierung aufgeschlossen und für jeden Tipp dankbar.
Zur Funktion wenn eine Software (datum) abläuft dann sollen eben gewisse Leute via Email verständigt werden.
Solange nur eine Software abläuft kein Problem, wenn es aber zwei sind dann soll eben an 2 verschiedene Leute eine Mail versendet werden und dies funktioniert eben noch nicht.
Naja, Du rufst ja in zeile 31 deine Mail-Versende-Funtkion nur 1x auf! Zudem liefert Zeile 30 ja nur den ersten Eintrag zurück! (Du retunrst etwas aus einer For-Schleife, was imho an sich schon mal unschön ist!)
def send_mail(daten):
# Hier eine Mail versenden
def get_expired():
# hier sql query druchführen und über Ergebnisse iterieren
# pro ergebnis send_mail aufrufen
def main():
# Hier DB initialisieren / cursor holen ...
if __name__ == "__main__":
main()
Und mach das doppelte execute weg Und nutze das fetchall()!
Traceback (most recent call last):
File "D:\FH\Programmieren\SLiMS_Abfrage\src\slims\sqlite_SLiMS_test.py", line 48, in <module>
abfrage()
File "D:\FH\Programmieren\SLiMS_Abfrage\src\slims\sqlite_SLiMS_test.py", line 43, in abfrage
datum = item[2]
TypeError: 'int' object is unsubscriptable
Traceback (most recent call last):
File "D:\FH\Programmieren\SLiMS_Abfrage\src\slims\sqlite_SLiMS_test.py", line 57, in <module>
send_mail(mail, mess, datum)
File "D:\FH\Programmieren\SLiMS_Abfrage\src\slims\sqlite_SLiMS_test.py", line 55, in send_mail
message = "Sehr geehrte Damen und Herren ! \n\nIhre Software mit der Bezeichnung " + mess + " laeuft am " +datum + " ab.\nBitte verstaendigen Sie Ihren Administrator.\n\nIhre SLiMS Datenbank "
TypeError: cannot concatenate 'str' and 'tuple' objects