Получение исключения «не все аргументы преобразованы во время форматирования строки» в функции AWS Lambda

#python #amazon-web-services #aws-lambda

#python #amazon-веб-сервисы #aws-lambda

Вопрос:

Я пытаюсь написать AWS Lambda-функцию на python, которая извлекает записи из таблицы. У меня нет проблем с локальным запуском кода. Однако, когда я запускаю код в функции AWS Lambda, я получаю сообщение об ошибке «не все аргументы преобразованы во время форматирования строки».

Запрос выполняется следующим кодом:

класс SalesReceipt(declarative_base(), PersistentBase .PersistentBase): tablename = ‘sales_receipts’

 id = Column(BigInteger, primary_key=True, autoincrement=True)
externalId = Column(String(35), nullable=False)
accountId = Column(BigInteger, nullable=False)
customerId = Column(BigInteger, nullable=False)
orderNumber = Column(String(30), nullable=True)
orderType = Column(String(35), nullable=True)
saleDate = Column(DateTime, nullable=False)
saleAmount = Column(BigInteger, nullable=False)
taxAmount = Column(BigInteger, nullable=False)
totalAmount = Column(BigInteger, nullable=False)


def get_by_account_id(self, account_id):
    logger = logging.getLogger()
    message = '=== [SalesReceipt]account_id = %d' % (account_id)
    logger.info(message)
    data_service = ds.DataService()
    try:
        session = data_service.get_session()
        query = session.query(SalesReceipt).filter(SalesReceipt.accountId == account_id)
        #query = session.query(SalesReceipt)
        logger.info('=== [SalesReceipt]Query created = %s' % (str(query)))
        result = query.all()
        logger.info('=== [SalesReceipt]Query has been successfully executed.')
        return result
    except NoResultFound:
        logging.error('=== [SalesReceipt]No results found')
        return None
    except Exception as ex:
        logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account.', ex)
        raise
    except:
        logging.error('=== [SalesReceipt]Caught un-handled exception.')
        raise
 

Ошибка возникает во время выполнения инструкции result = query.all() . После этого ничего не выполняется, и ни один из моих блоков catch не вводится.

Я погуглил это утверждение, но не нашел никакой подсказки относительно того, почему это происходит внутри функций sqlalchemy. Я проверил правильность запроса, распечатав запрос и выполнив его в базе данных вручную.

Я также новичок в python, поэтому любая помощь будет оценена.

Ответ №1:

Скорее всего, проблема в следующей строке —

 logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account.', ex)
 

ex передается, но никогда не включается в строку. Вместо этого попробуйте следующее —

 logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account - %s' % ex)
 

или

 logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account.')
 

Комментарии:

1. Это было так. Исправив эту ошибку, я смог получить реальное исключение. Реальным исключением оказались некоторые опечатки, поэтому я смог легко это исправить.