Как запустить SQLAlchemy на AWS Lambda в Python - PullRequest
0 голосов
/ 08 февраля 2019

Я подготовил очень простой файл для подключения к внешнему серверу базы данных MySQL, как показано ниже:

from sqlalchemy import *

def run(event, context):
    sql = create_engine('mysql://root:root@127.0.0.1/scraper?charset=utf8');
    metadata = MetaData(sql)

    print(sql.execute('SHOW TABLES').fetchall())

Не работает на AWS, но локально в Windows работает отлично.

Далее,Я устанавливаю pip install sqlalchemy --target my/dir и готовлю ZIP-файл для загрузки пакетов в AWS Lambda.

Запускаю, но с ошибочным сообщением No module named 'MySQLdb': ModuleNotFoundError.

Затем я использую pip install mysqlclient --target my/dir, создаю ZIP иснова загрузите в AWS Lambda.

Запустите, но с новым сообщением об ошибке cannot import name '_mysql': ImportError.

Итак, что мне теперь делать?

1 Ответ

0 голосов
/ 08 февраля 2019

SQLAlchemy включает в себя множество реализаций диалекта для различных бэкэндов.Диалекты для наиболее распространенных баз данных включены в SQLAlchemy;Горстка других требует дополнительной установки отдельного диалекта.

Диалект MySQL использует mysql-python в качестве DBAPI по умолчанию.Существует множество доступных DBAPI для MySQL, включая MySQL-connector-python и OurSQL

Вместо mysql вы можете использовать mysql+mysqlconnector

sql = create_engine('mysql+mysqlconnector://root:root@127.0.0.1/scraper?charset=utf8')

Затем используйте:

pip install mysql-connector --target my/dir

Создайте Zip и снова загрузите в AWS Lambda.

...