AWS Lambda with python sqlite3



我正在上传一个.zip文件到AWS Lambda,其中包含一个.py文件。上传后,我得到了这样的错误:

attempt to write a readonly database
[ERROR] OperationalError: table "AuData1" already exists
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 15, in lambda_handler
    cur.execute('''END RequestId: f5539447-a6d8-47ed-b415-5e2971923357

.py文件的代码是:

def lambda_handler(event,context):
try:
conn = sqlite3.connect('SearchResultData.db')
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS AuData1')
except Exception as e:
print(e)
cur.execute('''
CREATE TABLE "AuData1" (
.......

因此,基本上文件夹中的sqlite数据库包含这个表"AuData1",但我希望它删除它并创建一个新表。然而,数据库是不可访问的,因为它说">只读数据库";。如果有可用的解决方案,请提供帮助。提前感谢

使用Lambda,您可以在/tmp文件夹中写入文件,但不能在其他位置写入。听起来你正在上传到lambda的Zip中包含sqllite DB,如果是这样,你将无法更改它,因为它将在文件夹中。

您可以先将SearchResultData.db文件复制到/tmp,如果该文件还不存在的话。然后,您可以连接到/tmp目录中的数据库并对其进行写入。但是,如果您希望该数据库由其他lambda调用共享,请不要指望这一点。如果你需要一个持久数据库,你应该在lambda之外创建一个并连接到它

"每个执行环境在/tmp中提供512 MB的磁盘空间目录执行时保留目录内容环境被冻结,提供了可以使用的临时缓存用于多次调用。您可以添加额外的代码来检查缓存是否具有您存储的数据。有关部署大小的详细信息限制,请参阅AWS Lambda配额">

看看这个想法:

  • http://faculty.washington.edu/wlloyd/courses/tcss562/tutorials/TCSS562_f2019_tutorial_6.pdf
  • https://aws.amazon.com/blogs/aws/new-a-shared-file-system-for-your-lambda-functions/

最新更新