Hallo
Ich versuche ein Script zu schreiben bei dem die rundenzeit von Motorrad Fahren gemessen wird.
Die Fahrer müssen in jeder Runde einen rfid Chip scannen und dann wird u.a. die aktuelle Zeit in einer sqlite DB gespeichert.
Bei der nächsten Runde wird der Datensatz wieder aufgerufen und dann kommt mein Problem
Hier muss ich die gespeicherte Zeit von der aktuell gescannten Zeit abgezogen werden.
Mein Zeitstempel:
datetime.utcnow().strftime('%H%M%S%f')[:-2]
Wie kann ich den string umwandeln damit ich Zeiten damit berechnen kann
Ich Test schon 4 Tage komme aber nicht zurecht
MfG snuffel
zeit differenzen
datetime.utcnow() liefert dir einen brauchbare Zeitstempel mit dem du problemlos machen könntest was du willst, lässt sich sogar in einer SQLite Datenbank speichern, SQLite hat da extra einen Typen für. Dein Problem besteht darin dass du einen Schritt weitergehst und daraus einen String machst, mit dem man nichts sinnvolles anstellen kann. Anstatt den Fehler rückgängig zu machen, solltest du den Fehler gar nicht erst machen.
Hallo,
Danke das du so schnell geantwortet hast, Ich habe den stamp jetzt umgestellt und mit dem Format klappt es allerdings nur probehalber, den Wert den er aus der sollte DB zieht nimmt er nicht als timestamp sondern als unicode
Wie kann ich das ändern?
Unsupported operand types for -: 'unicode' and 'datetime.datetime'
Danke das du so schnell geantwortet hast, Ich habe den stamp jetzt umgestellt und mit dem Format klappt es allerdings nur probehalber, den Wert den er aus der sollte DB zieht nimmt er nicht als timestamp sondern als unicode
Wie kann ich das ändern?
Unsupported operand types for -: 'unicode' and 'datetime.datetime'
@snuffel55: das ist ein typisches Problem mit SQLite für das es auch eine Standardlösung gibt.
Von hier ein kurzes Beispiel:
Von hier ein kurzes Beispiel:
Code: Alles auswählen
>>> db = sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_DECLTYPES)
>>> c = db.cursor()
>>> c.execute('create table foo (bar integer, baz timestamp)')
<sqlite3.Cursor object at 0x40fc50>
>>> c.execute('insert into foo values(?, ?)', (23, datetime.datetime.now()))
<sqlite3.Cursor object at 0x40fc50>
>>> c.execute('select * from foo')
<sqlite3.Cursor object at 0x40fc50>
>>> c.fetchall()
[(23, datetime.datetime(2009, 12, 1, 19, 31, 1, 40113))]
An der Stelle möchte ich gerne SQLAlchemy in den Raum werfen, das macht das freundlicherweise schon von Haus aus.

Code: Alles auswählen
In [34]: import sqlalchemy as sa
In [35]: import datetime
In [36]: engine = sa.create_engine('sqlite:///:memory:')
In [37]: meta = sa.MetaData(bind=engine)
In [38]: foos = sa.Table('foo', meta, sa.Column('bar', sa.INT), sa.Column('baz', sa.TIMESTAMP))
In [39]: meta.create_all()
In [40]: foos.insert().values(bar=23, baz=datetime.datetime.now()).execute()
Out[40]: <sqlalchemy.engine.result.ResultProxy at 0x948cb8c>
In [41]: foos.select().execute().fetchall()
Out[41]: [(23, datetime.datetime(2016, 7, 14, 10, 40, 6, 340972))]