0

I successfully tested pandas, numpy, and sqlalchemy in an Amazon Linux docker image using python 3.6. I was able to import, use, and connect to a database in the virtual environment using create_engine from the sqlalchemy module in python 3.6.

I then exported all the dependencies and built a python deployment package to run it in AWS Lambda but for some reason I keep getting an error for create_engine in lambda.

module 'sqlalchemy' has no attribute 'create_engine': AttributeError

This is my code:

import pandas as pd
import numpy as np
import sqlalchemy
from datetime import datetime, timedelta

def lambda_handler(event, context):

    engine = sqlalchemy.create_engine("DB_URI")

    return "Hello world!"

However, if I simply comment out the line where I call create_engine, I get my "Hello world!" response.

I don't get why create_engine is not working in this environment when it worked perfectly fine in the identical docker environment. Any ideas?

1 Answer 1

1

I figured it out. I had a rookie mistake when I was zipping up my file and didn't use the -r option which meant only the top level of my python module folders where getting zipped up. This explains why I wasn't getting an import error but none of the actual methods were working.

So to reiterate, the solution was adding the -r option to my zip operation to add all the files recursively:

zip -r package.zip *

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.