'How to save a database object in PeeWee, if there's recursion error while saving

When I try to save an instance of an object, an error is occurring.
There's my file structure:

class Loader():
    dbhandle = SqliteDatabase('history.db')

    def __init__(self):
        try:
            Loader.dbhandle.connect()
            Hotel.create_table()
        except peewee.InternalError as px:
            print(str(px))
        try:
            HistoryObject.create_table()
        except peewee.InternalError as px:
            print(str(px))

    def save_to_database(self):
        history_object = HistoryObject(chat_id=0,
                                       command='123',
                                       date_time='123'
                                       )
        history_object.save()
    #...

class BaseModel(Model):
    class Meta:
        database = Loader.dbhandle

class HistoryObject(BaseModel):
    id = PrimaryKeyField(null=False)
    chat_id = IntegerField()
    command = CharField(max_length=100)
    date_time = CharField(max_length=100)

    class Meta:
        db_table = "historyObjects"

On calling save to database method of the Loader class, an error occur:

Traceback (most recent call last):
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 611, in infinity_polling
    self.polling(none_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 658, in polling
    self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 720, in __threaded_polling
    raise e
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 680, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
    raise self.exception_info
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\util.py", line 87, in run
    task(*args, **kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\Handlers\LowHighPrice.py", line 63, in handle
    make_query(message)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\Handlers\LowHighPrice.py", line 152, in make_query
    loader.save_to_database(0, '123', '123')
  File "C:\Users\342\PycharmProjects\python_basic_diploma\loader.py", line 72, in save_to_database
    history_object.save()
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6577, in save
    pk_value = self._pk
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6542, in get_id
    return getattr(self, self._meta.primary_key.safe_name)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4481, in __get__
    .where(self.field == getattr(instance, dest)))
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4481, in __get__
    .where(self.field == getattr(instance, dest)))
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4481, in __get__
    .where(self.field == getattr(instance, dest)))
  [Previous line repeated 488 more times]
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4479, in __get__
    return (self.rel_model
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6326, in select
    return ModelSelect(cls, fields, is_default=is_default)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6994, in __init__
    super(ModelSelect, self).__init__([model], fields)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6859, in __init__
    super(_ModelQueryHelper, self).__init__(*args, **kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 2281, in __init__
    super(Select, self).__init__(**kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 812, in __init__
    super(_HashableSource, self).__init__(*args, **kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 768, in __init__
    super(Source, self).__init__()
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 2042, in __init__
    super(Query, self).__init__(**kwargs)
RecursionError: maximum recursion depth exceeded while calling a Python object
"
Traceback (most recent call last):
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 611, in infinity_polling
    self.polling(none_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 658, in polling
    self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 720, in __threaded_polling
    raise e
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\__init__.py", line 680, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
    raise self.exception_info
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\telebot\util.py", line 87, in run
    task(*args, **kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\Handlers\LowHighPrice.py", line 63, in handle
    make_query(message)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\Handlers\LowHighPrice.py", line 152, in make_query
    loader.save_to_database(0, '123', '123')
  File "C:\Users\342\PycharmProjects\python_basic_diploma\loader.py", line 72, in save_to_database
    history_object.save()
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6577, in save
    pk_value = self._pk
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6542, in get_id
    return getattr(self, self._meta.primary_key.safe_name)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4481, in __get__
    .where(self.field == getattr(instance, dest)))
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4481, in __get__
    .where(self.field == getattr(instance, dest)))
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4481, in __get__
    .where(self.field == getattr(instance, dest)))
  [Previous line repeated 488 more times]
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 4479, in __get__
    return (self.rel_model
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6326, in select
    return ModelSelect(cls, fields, is_default=is_default)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6994, in __init__
    super(ModelSelect, self).__init__([model], fields)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 6859, in __init__
    super(_ModelQueryHelper, self).__init__(*args, **kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 2281, in __init__
    super(Select, self).__init__(**kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 812, in __init__
    super(_HashableSource, self).__init__(*args, **kwargs)
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 768, in __init__
    super(Source, self).__init__()
  File "C:\Users\342\PycharmProjects\python_basic_diploma\my_venv\lib\site-packages\peewee.py", line 2042, in __init__
    super(Query, self).__init__(**kwargs)
RecursionError: maximum recursion depth exceeded while calling a Python object

The Loader class also used for instancing and polling bot using pyTelegramBotApi and the method called from another file. Don't know if it could cause problem
The class Loader itself is always instanced once, so __init__ method must be called only once too
A bit more info: While trying to debug it, I wrote in peewee.py package file in getattr a print fucntion to print dest variable. It always equals 'id'.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source