Error "Duplicate entry for key 'timeslot_id'" due to trying to save existing timeslot
Try to schedule an timeslot before at least one schedule cycle.
- [control.py:387-log_commands()]
2021-01-18 17:36:32,820:AuraEngine:INFO - == start fetching new timeslots (every 30 seconds) == - [scheduler.py:105-run()]
--- Logging error ---
Traceback (most recent call last):
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1283, in _execute_context
self.dialect.do_execute(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute
cursor.execute(statement, parameters)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 247, in execute
res = self._query(query)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 411, in _query
rowcount = self._do_query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 374, in _do_query
db.query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 277, in query
_mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry '361' for key 'timeslot_id'")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/david/Code/aura/engine/src/scheduling/scheduler.py", line 108, in run
self.programme.refresh()
File "/home/david/Code/aura/engine/src/scheduling/programme.py", line 79, in refresh
self.timeslots = self.programme_store.store_timeslots(response)
File "/home/david/Code/aura/engine/src/scheduling/programme.py", line 291, in store_timeslots
timeslot_db = self.store_timeslot(timeslot)
File "/home/david/Code/aura/engine/src/scheduling/programme.py", line 390, in store_timeslot
timeslot_db.store(add=havetoadd, commit=True)
File "/home/david/Code/aura/engine/src/scheduling/models.py", line 77, in store
DB.session.commit()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1042, in commit
self.transaction.commit()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 504, in commit
self._prepare_impl()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 483, in _prepare_impl
self.session.flush()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2523, in flush
self._flush(objects)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2664, in _flush
transaction.rollback(_capture_exception=True)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
compat.raise_(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2624, in _flush
flush_context.execute()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute
rec.execute(self)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 586, in execute
persistence.save_obj(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 239, in save_obj
_emit_insert_statements(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1135, in _emit_insert_statements
result = cached_connections[connection].execute(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1020, in execute
return meth(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1133, in _execute_clauseelement
ret = self._execute_context(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1323, in _execute_context
self._handle_dbapi_exception(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1517, in _handle_dbapi_exception
util.raise_(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1283, in _execute_context
self.dialect.do_execute(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute
cursor.execute(statement, parameters)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 247, in execute
res = self._query(query)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 411, in _query
rowcount = self._do_query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 374, in _do_query
db.query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 277, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '361' for key 'timeslot_id'")
[SQL: INSERT INTO timeslot (playlist_id, default_schedule_playlist_id, default_show_playlist_id, schedule_fallback_id, show_fallback_id, station_fallback_id, timeslot_start, timeslot_end, timeslot_id, show_id, show_name, show_hosts, funding_category, comment, languages, type, category, topic, musicfocus, is_repetition) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)]
[parameters: (None, None, 9, None, None, None, '2021-01-18T17:38:00', '2021-01-18T17:40:00', 361, 1, 'Musikprogramm', 'Musikredaktion', 'Standard', None, 'Farsi', 'Unmoderiertes Musikprogramm', '', '', '', 0)]
(Background on this error at: http://sqlalche.me/e/gkpj)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
msg = self.format(record)
File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
return fmt.format(record)
File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
record.message = record.getMessage()
File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
msg = msg % self.args
TypeError: not enough arguments for format string
Call stack:
File "/home/david/.vscode/extensions/ms-python.python-2020.12.424452561/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py", line 916, in __call__
ret = self.original_func(*self.args, **self.kwargs)
File "/usr/lib/python3.8/threading.py", line 890, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/home/david/Code/aura/engine/src/scheduling/scheduler.py", line 115, in run
self.logger.critical(SU.red(f"Unhandled error while fetching & scheduling new programme! ({str(e)})"), e)
Message: '\x1b[31mUnhandled error while fetching & scheduling new programme! ((_mysql_exceptions.IntegrityError) (1062, "Duplicate entry \'361\' for key \'timeslot_id\'")\n[SQL: INSERT INTO timeslot (playlist_id, default_schedule_playlist_id, default_show_playlist_id, schedule_fallback_id, show_fallback_id, station_fallback_id, timeslot_start, timeslot_end, timeslot_id, show_id, show_name, show_hosts, funding_category, comment, languages, type, category, topic, musicfocus, is_repetition) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)]\n[parameters: (None, None, 9, None, None, None, \'2021-01-18T17:38:00\', \'2021-01-18T17:40:00\', 361, 1, \'Musikprogramm\', \'Musikredaktion\', \'Standard\', None, \'Farsi\', \'Unmoderiertes Musikprogramm\', \'\', \'\', \'\', 0)]\n(Background on this error at: http://sqlalche.me/e/gkpj))\x1b[0m'
Arguments: (IntegrityError('(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry \'361\' for key \'timeslot_id\'")'),)
--- Logging error ---
Traceback (most recent call last):
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1283, in _execute_context
self.dialect.do_execute(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute
cursor.execute(statement, parameters)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 247, in execute
res = self._query(query)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 411, in _query
rowcount = self._do_query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 374, in _do_query
db.query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 277, in query
_mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry '361' for key 'timeslot_id'")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/david/Code/aura/engine/src/scheduling/scheduler.py", line 108, in run
self.programme.refresh()
File "/home/david/Code/aura/engine/src/scheduling/programme.py", line 79, in refresh
self.timeslots = self.programme_store.store_timeslots(response)
File "/home/david/Code/aura/engine/src/scheduling/programme.py", line 291, in store_timeslots
timeslot_db = self.store_timeslot(timeslot)
File "/home/david/Code/aura/engine/src/scheduling/programme.py", line 390, in store_timeslot
timeslot_db.store(add=havetoadd, commit=True)
File "/home/david/Code/aura/engine/src/scheduling/models.py", line 77, in store
DB.session.commit()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1042, in commit
self.transaction.commit()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 504, in commit
self._prepare_impl()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 483, in _prepare_impl
self.session.flush()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2523, in flush
self._flush(objects)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2664, in _flush
transaction.rollback(_capture_exception=True)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
compat.raise_(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2624, in _flush
flush_context.execute()
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute
rec.execute(self)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 586, in execute
persistence.save_obj(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 239, in save_obj
_emit_insert_statements(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1135, in _emit_insert_statements
result = cached_connections[connection].execute(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1020, in execute
return meth(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1133, in _execute_clauseelement
ret = self._execute_context(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1323, in _execute_context
self._handle_dbapi_exception(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1517, in _handle_dbapi_exception
util.raise_(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1283, in _execute_context
self.dialect.do_execute(
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute
cursor.execute(statement, parameters)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 247, in execute
res = self._query(query)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 411, in _query
rowcount = self._do_query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/cursors.py", line 374, in _do_query
db.query(q)
File "/home/david/Code/aura/engine/python/lib/python3.8/site-packages/MySQLdb/connections.py", line 277, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '361' for key 'timeslot_id'")
[SQL: INSERT INTO timeslot (playlist_id, default_schedule_playlist_id, default_show_playlist_id, schedule_fallback_id, show_fallback_id, station_fallback_id, timeslot_start, timeslot_end, timeslot_id, show_id, show_name, show_hosts, funding_category, comment, languages, type, category, topic, musicfocus, is_repetition) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)]
[parameters: (None, None, 9, None, None, None, '2021-01-18T17:38:00', '2021-01-18T17:40:00', 361, 1, 'Musikprogramm', 'Musikredaktion', 'Standard', None, 'Farsi', 'Unmoderiertes Musikprogramm', '', '', '', 0)]
(Background on this error at: http://sqlalche.me/e/gkpj)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
msg = self.format(record)
File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
return fmt.format(record)
File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
record.message = record.getMessage()
File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
msg = msg % self.args
TypeError: not enough arguments for format string
Call stack:
File "/home/david/.vscode/extensions/ms-python.python-2020.12.424452561/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py", line 916, in __call__
ret = self.original_func(*self.args, **self.kwargs)
File "/usr/lib/python3.8/threading.py", line 890, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/home/david/Code/aura/engine/src/scheduling/scheduler.py", line 115, in run
self.logger.critical(SU.red(f"Unhandled error while fetching & scheduling new programme! ({str(e)})"), e)
Message: '\x1b[31mUnhandled error while fetching & scheduling new programme! ((_mysql_exceptions.IntegrityError) (1062, "Duplicate entry \'361\' for key \'timeslot_id\'")\n[SQL: INSERT INTO timeslot (playlist_id, default_schedule_playlist_id, default_show_playlist_id, schedule_fallback_id, show_fallback_id, station_fallback_id, timeslot_start, timeslot_end, timeslot_id, show_id, show_name, show_hosts, funding_category, comment, languages, type, category, topic, musicfocus, is_repetition) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)]\n[parameters: (None, None, 9, None, None, None, \'2021-01-18T17:38:00\', \'2021-01-18T17:40:00\', 361, 1, \'Musikprogramm\', \'Musikredaktion\', \'Standard\', None, \'Farsi\', \'Unmoderiertes Musikprogramm\', \'\', \'\', \'\', 0)]\n(Background on this error at: http://sqlalche.me/e/gkpj))\x1b[0m'
Arguments: (IntegrityError('(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry \'361\' for key \'timeslot_id\'")'),)