I am trying to write an AWS Lambda function in python that retrieves records from a table. I have no trouble running the code locally. However, when I run the code in AWS Lambda function, I get the error “not all arguments converted during string formatting”.
The query is executed by the following code:
class 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
The error is encountered during statement result = query.all(). Nothing is executed after that and none of my catch blocks are entered.
I have googled this statement but have not found any clue as to why this is happening inside sqlalchemy functions. I have verified that the query is correct by printing the query out and executing it against the database manually.
I am also a newbie to python so any help will be appreciated.
Advertisement
Answer
Most likely the issue is in the following line –
logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account.', ex)
ex
is passed but never included in the string. Try the following instead –
logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account - %s' % ex)
or
logging.error('=== [SalesReceipt]Failed to retrieve sales receipts for the account.')