Seite 1 von 1
1Std zur Uhrzeit addieren
Verfasst: Mittwoch 18. November 2020, 16:23
von co-se
Mein Code wie es werden soll
Es geht nicht über 21:00 Uhr als Begin hinaus mal vorweg
Code: Alles auswählen
now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
#ende = begin + 1 Std
print begin
#print ende
:
ende mußte ich erst mal Kommetar setzen
es gabt versuche
Code: Alles auswählen
now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
enh = time.strftime('%H', time.localtime())
enm = time.strftime('%M', time.localtime())
ens = time.strftime('%S', time.localtime())
nenh = enh + 1
ende = nenh + ":" + enm + ":" + ens
print begin
print ende
:
ich habe wie zu sehen die Zeit zerlegt und wollte zur std 1 dazu zählen
und wieder zusammen setzen
TypeError: cannot concatenate 'str' and 'int' objects
Ok, verstehe, kann 1 nicht zu enh addieren, weil es nicht gleiche sache ist (str ist nicht gleich int)
Code: Alles auswählen
das = "1"
now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
enh = time.strftime('%H', time.localtime())
enm = time.strftime('%M', time.localtime())
ens = time.strftime('%S', time.localtime())
enh = enh + das
ende = enh + ":" + enm + ":" + ens
print "Begin = " + begin
print "Ende = " + ende
:
Begin = 16:15:34
Ende = 161:15:34
Warum nicht
Begin = 16:15:34
Ende = 17:15:34
????
Re: 1Std zur Uhrzeit addieren
Verfasst: Mittwoch 18. November 2020, 16:32
von sparrow
Was ist denn das für ein wildes Rumgeschlönsel mit geparsten Zeiten? Wenn du "jetzt" haben willst, solltest du nach "now" suchen.
Code: Alles auswählen
>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2020, 11, 18, 16, 30, 52, 892064)
>>> than = now + datetime.timedelta(hours=1)
>>> than
datetime.datetime(2020, 11, 18, 17, 30, 52, 892064)
Re: 1Std zur Uhrzeit addieren
Verfasst: Mittwoch 18. November 2020, 17:23
von DeaD_EyE
Ich nenne das Bruteforce-Coding.
Man kann nicht einfach irgendwas schreiben und erwarten, dass der Computer (der Python Interpreter) die Gedankengänge magisch interpretieren kann. Wie soll das gehen?
Außerdem wäre es dann für andere Entwickler schwierig Gedankengänge nachzuvollziehen, wenn der Interpreter schwarze Magie anwendet.
D.h. man hätte dann auch keinen gemeinsamen Standard und jeder schreibt wie er lustig ist.
Zum Glück ist das noch nicht möglich.
Re: 1Std zur Uhrzeit addieren
Verfasst: Donnerstag 19. November 2020, 12:04
von co-se
Mein ganzer Code ist zusammen gestückelt
wo ich was gefunden hatte habe ich übernommen und getestet
In Bücher und im Internet wo ich suchte fand ich keine Lösung
Ich bastelle an einer E-Parkscheibe wo mit Knopfdruck Begin und geplante
Endzeit angezeigt werden soll
Daher meine Versuche zu einer Bestimmten Zeit nach Vorauswahl
nach Start drücken die gewählte Std dazu addiert werden sollen
now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
print begin
soweit klappt alles
aber 1 std ( für die ersten tests ) dazu klappt nicht
gibt es überhaupt eine Lösung
unter PHP habe ich es gelöst bekommen schon mal
aber das kann ich hier nicht einsetzen
Re: 1Std zur Uhrzeit addieren
Verfasst: Donnerstag 19. November 2020, 12:14
von pillmuncher
@co-se: sparrow hat dir die Lösung doch schon gezeigt.
Re: 1Std zur Uhrzeit addieren
Verfasst: Donnerstag 19. November 2020, 12:33
von __deets__
Die Antwort ist von sparrow gegeben worden. Was daran ist unklar?
Re: 1Std zur Uhrzeit addieren
Verfasst: Donnerstag 19. November 2020, 13:28
von Sirius3
@co-se: PHP ist schwach typisiert, da kann man Zahlen mit Strings addieren und es kommt irgendwas raus, was, wenn man es richtig macht, vielleicht auch dem entspricht, was man möchte. Kurz, es ist ein Quell fröhlicher Fehlersuchen. Python dagegen ist stark typisiert, ein String wird nicht einfach so zur Zahl und auch nicht umgekehrt.
In Deinem Code ermittelst Du vier mal die aktuelle Zeit. Da kannst Du lustig daneben liegen, wenn Du die Stunde um 14:59:59 ermittelst und die Minuten erst um 15:00:00.
Gwöhn Dir auch gleich an, sprechende Variablennamen zu verwenden. Man darf gerne mehr als drei Buchstaben verwenden.
Python2 ist schon seit langem veraltet und wird nicht mehr gepflegt, steige auf Python3 um.
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 07:41
von co-se
Habe nun umgestellt auf python 3
aber jetzt will meine abfrage nicht mehr
Code: Alles auswählen
import RPi.GPIO as GPIO
import MFRC522
import signal
import datetime
import time
import mysql.connector
import os
#Zugriff auf Datenbank
mydb = mysql.connector.connect (host = "localhost",
user = "root",
password = "eadmin",
database = "test")
bus = "ff"
mycursor = mydb.cursor()
sql = "SELECT d1, d2, d3, d3, d5 FROM db WHERE d6 = %s"
adr = (bus, )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
for row in myresult:
mycursor = mydb.cursor()
sql = "INSERT INTO ess (v1, v2, v3) VALUES (%s, %s, %s)"
val = ("1", "2", "3")
mycursor.execute(sql, val)
mydb.commit()
print("Auftrag erledigt")
ohne abfrage kein problem
ist es möglich eine abfrage zu bekommen wenn bus = "uu" ist das ich eine meldung schreiben kann wie print("Nicht möglich")
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 07:57
von sparrow
Was heißt denn "will nicht mehr"?
Fehlermeldung? Traceback? Was erwartest du, was passiert stattdessen?
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 08:32
von co-se
keine fehlermeldungung
meine SQL abfragen und eintragungen sind ok
unter python 2
a= cur.execute("SELECT d1, d2, d3, d3, d5 FROM db WHERE d6 = %s" ,bus )
if a == 0:
print "Auftrag erledigt"
continue
else:
print "Nicht möglich"
war das möglich
unter python3 nicht mehr
das nicht vorhanden sein wird nicht ausgeführt
besser gesagt ich weiß nicht wie ich es unter python3 sowas hinbekomme
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 11:07
von __blackjack__
@co-se: Da fehlt die Abfrage des Ergebnisses von dem SELECT.
Das `a` was Du da verwendest ist undefiniert. `Cursor.execute()` gibt nichts zurück. Siehe hier den letzten Absatz:
https://www.python.org/dev/peps/pep-0249/#id15
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 12:54
von co-se
das ist in python2 geschrieben da klappt es
unter python3
Code: Alles auswählen
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers, tools, windows WHERE tools = %s"
adr = ("YG2", )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
so
Code: Alles auswählen
for row in myresult:
if card == row[1]:
print ("Auftrag erledigt")
continue
else:
print ("Nicht möglich")
oder
Code: Alles auswählen
if sql == 0:
print ("Auftrag erledigt")
continue
else:
print ("Nicht möglich")
komme ich nicht weiter
ist mein Wert YG2 wenn er da ist dann kommt auftrag erledigt habe ich einen andeern Wert XG3 dann passiert nichts
brauche aber print ("Nicht möglich")
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 13:26
von __blackjack__
@co-se: Das sieht sehr komisch aus. Das ``continue`` macht keinen Sinn. Und `sql` ist eine Zeichenkette, die kann niemals gleich dem Zahlwert 0 sein. `card` ist nicht definiert. Im letzten Quelltextschnippsel fehlt die Einrückung.
Falls `card` den Wert "YG2" hat, die Abfrage für `tools` in einem Datensatz aber "XG3" ist, dann gibt der gezeigte Code "Nicht möglich" aus.
Diese ganze `my`-Präfixe bei den Namen bringen keinen Mehrwert, die sollten da nicht stehen.
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 13:40
von co-se
mir klar das es komisch aussieht, aber im grunde geht es nicht wie ich es brauche und habe im internet und im buch nichts gefunden
auch versuche mit if was zu machen ist erfolglos
A = Wert ( ändert sich)
B irgenwo in einer Tabelle
SQL Abfrage = Hole mir Daten aus Tabelle mit Wert B was A hat
Schreibe mir Daten in andere Tabelle
Soweit so gut
ist aber A nicht in Tabelle wo B ist
dann bringe mir Fehlermeldung
das ist für mich nicht lösbar
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 13:47
von co-se
Eine möglichkeit habe ich noch gefunden
ich müßte über Shell arbeiten
os.system:
ich rufe also unter python die shell auf
... php run.php
aber wie ist es mit rückmeldungen an python um fehlermeldungen weiter zu bearbeiten
Re: 1Std zur Uhrzeit addieren
Verfasst: Samstag 21. November 2020, 14:13
von sparrow
Warum wllst du denn jetzt irgendwelche Dinge aufrufen? Das wirkt alles sehr... ungeplant und unkoordiniert.
Zeig deinen kompletten Code, der nicht funktioniert - nicht zerstückelt wie oben.
Zeige mögliche Fehlermeldungen.
Beschreibe präzise, was der Code machen soll und was sich anders verhält, als du erwartest.
Re: 1Std zur Uhrzeit addieren
Verfasst: Sonntag 22. November 2020, 09:56
von co-se
Abrufen klappt unter Python 2
cur = db.cursor()
a= cur.execute("SELECT dbid, dbnr, dbdbdach, dbdbland, dbwo FROM db WHERE dbwas = %s" ,card )
cur.close()
if a == 0:
print "Nicht vorhanden"
continue
else:
print "Vorhanden"
unter python 3 auch
mycursor = mydb.cursor()
sql = "SELECT dbvmglid, dbvmgl17 FROM dbvmgl WHERE dbvmgl17 = %s"
adr = (card, )
mycursor.execute(sql, adr)
wie zu sehen gibt es eine if abfrage unter python 2 mit bezug auf
a= cur.execute("SELECT dbid, dbnr, dbdbdach, dbdbland, dbwo FROM db WHERE dbwas = %s" ,card )
sowas brauche ich unter python3
aber ich habe noch nichts gefunden
Re: 1Std zur Uhrzeit addieren
Verfasst: Sonntag 22. November 2020, 10:04
von __deets__
cursor.execute liefert offiziell nichts zurück. Arbeite mit rowcount:
https://www.python.org/dev/peps/pep-0249/#rowcount
Re: 1Std zur Uhrzeit addieren
Verfasst: Sonntag 22. November 2020, 11:14
von __blackjack__
Oder weil das ja auch nicht wirklich sicher vorhanden ist vielleicht gleich ordentlich mit COUNT und `fetchone()`.
Re: 1Std zur Uhrzeit addieren
Verfasst: Sonntag 22. November 2020, 11:39
von Sirius3
Die Feldnamen sind sehr schlecht. Warum hat dbdbland zweimal db? Oder was soll dbvmgl17 bedeuten? Wie bei Variablennamen sollten auch Feldnamen in Tabellen aussagekäftig sein und keine Abkürzungen enthalten.
Es gibt viele Möglichkeiten, wie man die Abfrage richtig macht, je nachdem, was Du eigentlich erreichen willst.
Wenn es wirklich nur um das Vorhandensein geht:
Code: Alles auswählen
cursor.execute("SELECT count(*) FROM db WHERE dbwas = %s" , card)
count = cursor.fetchone()[0]
if count == 0:
print("Nicht vorhanden")
else:
print("Vorhanden")
Wenn es exakt einen Eintrag gibt, und Du mit diesem Eintrag noch etwas machen willst:
Code: Alles auswählen
cursor.execute("SELECT dbid, dbnr, dbdbdach, dbdbland, dbwo FROM db WHERE dbwas = %s" , card)
entry = cursor.fetchone()
if entry is None:
print("Nicht vorhanden")
else:
print("Vorhanden")
Wenn es mehrere Einträge geben kann:
Code: Alles auswählen
cursor.execute("SELECT dbid, dbnr, dbdbdach, dbdbland, dbwo FROM db WHERE dbwas = %s" , card)
entries = cursor.fetchall()
if not entries:
print("Nicht vorhanden")
else:
print("Vorhanden")
Oder irgendeine Variante davon, je nachdem, was Du eigentlich machen willst. Daher ist es wichtig, dass Du hier beschreibst, was Du machen willst und nicht nur ein paar Codefragmente hinzuwerfen.