我正在尝试使用AWS Lambda Python(Python初学者)启动并运行,但是在包含MySQL依赖项时遇到了一些问题。我试图按照指示在这里我的Mac上。
对于第3步,我在项目的根目录执行命令遇到一些问题
sudo pip install MySQL-python -t /
错误:
例外:追溯(最近一次通话最近):文件“ /Library/Python/2.7/site- packages/pip-1.5.6-py2.7.egg/pip/basecommand.py”,行122,处于主要状态=自我.run(options,args)文件“ /Library/Python/2.7/site- packages/pip-1.5.6-py2.7.egg/pip/commands/install.py”,第311行,位于运行os.path中。 join(options.target_dir,item)文件“ /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py”,行292,在移动中引发错误,“目标路径’%s ‘已经存在“%real_dst错误:目标路径’/MySQL_python-1.2.5-py2.7.egg- info/MySQL_python-1.2.5-py2.7.egg-info’已存在
我最终编写了以下lambda函数(在Mac上可以正常运行),该函数是:
import MySQLdb def lambda_handler(event, context): # Open database connection db = MySQLdb.connect(...) # prepare a cursor object using cursor() method cursor = db.cursor() sql = "SELECT * FROM Users" try: # Execute the SQL command cursor.execute(sql) # Fetch all the rows in a list of lists. results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # Now print fetched result print ("lname=%s" %(lname)) except: print "Error: unable to fecth data" # disconnect from server db.close()
我要做的是转到/Library/Python/2.7/site-packages并复制我在sudo pip安装MySQL- python时下载的MySQLdb文件夹/文件(不带-t /)(我是确保我在这里对lambda项目做错了事,然后将内容与lambda_function.py一起压缩并上传到AWS Lambda。
然后我得到:
无法导入模块“ lambda_function”:没有名为MySQLdb的模块
感谢您的任何帮助和建议!
编辑
能够使sudo pip安装MySQL-python -t / pathToProject工作(感谢注释中的帮助),但是现在我在运行lambda函数时得到了这个:
无法导入模块“ lambda_function”:/var/task/_mysql.so:无效的ELF标头
我知道如果我在Linux机器上工作,那么它应该可以正常工作(有人建议),但是我想知道是否可以在OS X机器上使它工作。
对于像Lambda这样的用例,使用像PyMySQL这样的纯python实现会更快乐。
这是遵循Python数据库API规范的MySQLdb的替代品。对于大多数事件,例如触发的Lambda事件,速度将一样快。
我已经在生产中使用了很多,效果很好。