首页 > 解决方案 > 在 AWS Lambda 函数中获取“并非在字符串格式化期间转换的所有参数”异常

问题描述

我正在尝试在 python 中编写一个从表中检索记录的 AWS Lambda 函数。我在本地运行代码没有问题。但是,当我在 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 的新手,所以任何帮助将不胜感激。

标签: pythonamazon-web-servicesaws-lambda

解决方案


很可能问题出在以下行 -

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.')

推荐阅读