SQLAlchemy: Error is SQLAlchemy object is not iterable

ребята.

Я использую такой код для работы с SQL с помощью Python:

import logging
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

from extensions.db_map import DownloadRequestIds

logging.basicConfig(format=u'%(filename)s [ LINE:%(lineno)+3s ]#%(levelname)+8s [%(asctime)s]  %(message)s',
                    level=logging.DEBUG)

engine = create_engine(f'sqlite:///db/botuploads.db')


class SQLStorage():
    def __init__(self):
        self.session_factory = sessionmaker(bind=engine)
        self.Session = scoped_session(self.session_factory)

    def add_item_to_sql(self, url, start, end, user_id, chat_id, message_id, lang):
        session = self.Session()
        new_item = DownloadRequestIds(url=url,
                                      start=start,
                                      end=end,
                                      user_id=user_id,
                                      chat_id=chat_id,
                                      message_id=message_id,
                                      lang=lang)
        try:
            session.add(new_item)
            session.commit()
        except Exception as e:
            logging.error(
                'Couldn\'t upload {}. Error is {}'.format(new_item, e))
        else:
            logging.info(
                f'Successfully uploaded and saved to DB file {new_item}')
        finally:
            session.close()

    def get_item_to_sql(self):
        global item
        session = self.Session()
        try:
            item = session.query(DownloadRequestIds).filter_by(id=1).first()
            print(type(item))
            data = [[x for x in item]]
            logging.info(f'get_item_to_sql: {item}')
        except Exception as e:
            logging.error(
                'Couldn\'t upload {}. Error is {}'.format(item, e))
        else:
            logging.info(
                f'Successfully uploaded and saved to DB file {item}')
        finally:
            session.close()
            self.delete_item_to_sql(item)
            return item

    def delete_item_to_sql(self, item):
        session = self.Session()
        try:
            session.delete(item)
            session.commit()
        except Exception as e:
            session.rollback()
            logging.error(
                'Couldn\'t upload {}. Error is {}'.format(item, e))
        else:
            logging.info(
                f'Successfully uploaded and saved to DB file {item}')
        finally:
            session.close()

Добавление в БД идет нормально.

Но когда я пробую делать выборку из БД (get_item_to_sql), то получаю ошибку

Couldn't upload <extensions.db_map.DownloadRequestIds object at 0x7fb5f4a958b0>. Error is 'DownloadRequestIds' object is not iterable

Что-то не могу понять где ошибаюсь и почему не могу итерироваться по SQLAlchemy объекту.


Ответы (0 шт):