#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. Это было так. Исправив эту ошибку, я смог получить реальное исключение. Реальным исключением оказались некоторые опечатки, поэтому я смог легко это исправить.