Riy*_*ani 3 python database sqlite amazon-web-services aws-lambda
我正在将 .zip 文件上传到 AWS Lambda,其中包含 .py 文件。上传后我收到这样的错误:
\nattempt to write a readonly database\n[ERROR] OperationalError: table "AuData1" already exists\nTraceback (most recent call last):\n\xc2\xa0\xc2\xa0File "/var/task/lambda_function.py", line 15, in lambda_handler\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0cur.execute('''END RequestId: f5539447-a6d8-47ed-b415-5e2971923357\nRun Code Online (Sandbox Code Playgroud)\n.py 文件的代码是:
\ndef lambda_handler(event,context):\n try:\n conn = sqlite3.connect('SearchResultData.db')\n cur = conn.cursor()\n cur.execute('DROP TABLE IF EXISTS AuData1')\n except Exception as e:\n print(e)\n\n cur.execute('''\n CREATE TABLE "AuData1" (\n.......\nRun Code Online (Sandbox Code Playgroud)\n所以基本上文件夹中存在的 sqlite 数据库包含此表“AuData1”,但我希望它删除该表并创建一个新表。但是,该数据库无法访问,因为它显示为“只读数据库”。\n如果有任何可用的解决方案,请提供帮助。先感谢您
\n使用 Lambda,您可以在文件夹中写入文件/tmp,但不能在其他位置写入文件。听起来您在上传到 lambda 的 Zip 中包含了 sqllite DB,如果是这样,您将无法更改它,因为它所在的文件夹。
您可以首先将 SearchResultData.db 文件复制到 /tmp(如果该文件尚不存在)。然后您可以连接到 /tmp 目录中的数据库并对其进行写入。但如果您希望其他 lambda 调用共享该数据库,请不要指望这一点。如果您需要一个持久数据库,您应该在 lambda 之外创建一个数据库并连接到它。也就是说,这篇文章说
“每个执行环境在 /tmp 目录中提供 512 MB 的磁盘空间。当执行环境被冻结时,目录内容仍然保留,提供可用于多次调用的临时缓存。您可以添加额外的代码来检查缓存是否有您存储的数据。有关部署大小限制的更多信息,请参阅 AWS Lambda 配额。”
看看这个的想法:
| 归档时间: |
|
| 查看次数: |
5966 次 |
| 最近记录: |