You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda部署Django API遇SQLite版本及pysqlite3编译问题

解决AWS Lambda上Django 4.2.4的SQLite版本过低问题

问题根源

AWS Lambda默认提供的SQLite版本低于3.8.3,而Django 4.2.4中deterministic=True的配置要求SQLite 3.8.3+,触发NotSupportedError;手动编译安装pysqlite3失败是因为缺少编译依赖(如sqlite开发库、cmake环境)。

方案1:使用预编译的pysqlite3-binary(最快解决)

跳过编译步骤,直接用预编译的二进制包:

  • 本地打包Lambda层(对应Python3.11版本):
    mkdir -p python/lib/python3.11/site-packages
    pip install pysqlite3-binary -t python/lib/python3.11/site-packages/
    zip -r pysqlite3-layer.zip python/
    
  • 将pysqlite3-layer.zip上传为Lambda层,并关联到你的Lambda函数
  • 修改Django的启动文件(如wsgi.py或asgi.py),在最顶部添加代码替换默认sqlite3:
    __import__('pysqlite3')
    import sys
    sys.modules['sqlite3'] = sys.modules.pop('pysqlite3')
    

方案2:禁用deterministic配置(临时测试用)

如果不需要依赖deterministic=True的功能,找到代码中设置该参数的位置(比如自定义数据库函数、models中的Func子类),将其改为deterministic=False或移除该参数。

方案3:切换到生产级数据库(长期推荐)

SQLite不适合Lambda这类无服务器生产环境,建议替换为AWS RDS(PostgreSQL/MySQL):

  • 在AWS控制台创建RDS实例,配置好访问权限
  • 修改Django settings.py中的DATABASES配置:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'your-db-name',
            'USER': 'your-db-user',
            'PASSWORD': 'your-db-password',
            'HOST': 'your-rds-endpoint',
            'PORT': '5432',
        }
    }
    
  • 打包时确保安装对应数据库的驱动(如psycopg2-binary)

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:52:22