代码之家  ›  专栏  ›  技术社区  ›  kicaj

如何在Python中的AWS lambda上运行sqlAlchemy

  •  1
  • kicaj  · 技术社区  · 6 年前

    我预先准备了非常简单的文件,用于连接外部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上的localy工作得很好。

    接下来,我安装 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 回复  |  直到 6 年前
        1
  •  3
  •   I Bajwa PHD    6 年前

    SQLAlchemy包含许多用于各种后端的方言实现。 最常见数据库的方言包含在sqlacalchemy中;a 其他一些则需要另外安装一个独立的方言。

    mysql方言使用mysql python作为默认dbapi。有 提供了许多mysql dbapis,包括mysql connector python和 URSQL

    而不是 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。