Django的AWS S3托管SQLite数据库后端。
项目描述
django-s3-sqlite
该项目受到Zappa的启发并开始开发。感谢Rich Jones的所有出色工作。
安装
通过pip
安装
$ pip install django-s3-sqlite
将其添加到已安装的应用中
INSTALLED_APPS += ["django_s3_sqlite"]
使用S3支持的数据库引擎
django-s3-sqlite
允许使用S3同步的SQLite数据库作为Django数据库引擎。
这将导致并发写入的应用程序出现问题**,但对于没有并发写入(如博客的CMS)的高读应用,它具有非常好的可扩展性,并且比AWS RDS或Aurora便宜得多(每月只需几分钱,而不是每月几十美元)。
** 并发写入通常会丢失,并且不会在并发读取者中显示。这是因为每次请求都会在S3存储和Lambda实例之间转移数据库。
Django 设置与命令
DATABASES = {
"default": {
"ENGINE": "django_s3_sqlite",
"NAME": "sqlite.db",
"BUCKET": "your-db-bucket",
"AWS_S3_ACCESS_KEY": "AKIA0000000000000000", # optional, to lock down your S3 bucket to an IAM user
"AWS_S3_ACCESS_SECRET": "9tIZfakefakefakefakeT9Q6LD6jB5UyofakeISN", # optional, to lock down your S3 bucket to an IAM user
}
}
较新版本的Django(v2.1+)需要比AWS Lambda实例上可用的SQLite(3.7.17)更新的SQLite版本(3.8.3+)。
因此,您需要下载适用于您Python版本的提供的 _sqlite3.so
文件(可在本存储库的 shared-objects
目录中找到)并将其放置在Django项目的根目录下。 注意,目前仅支持Python 3.6和3.8运行时。这些共享对象文件包含SQLite 3.30.1的编译二进制静态构建版本,可用于对应版本的Python。您还需要将此行添加到每个环境的Zappa JSON设置文件中
"use_precompiled_packages": false,
由于SQLite将数据库存储在单个文件中,因此您希望将其保持尽可能小和碎片化。定期进行数据库真空操作是很好的,尤其是在删除或更新数据之后。有一个命令可以真空您的数据库
zappa manage [instance] s3_sqlite_vacuum
创建默认管理员用户
您可能需要一个默认用户来管理您的应用程序,因此您现在可以
$ zappa manage <stage> create_admin_user
或者您可以通过传递一些参数
$ zappa manage <stage> create_admin_user one two three
这将在内部调用此调用
User.objects.create_superuser('one', 'two', 'three')
发行说明 & 贡献者
维护者与创作者
- 维护者:Tim Allen (https://github.com/FlipperPA/)
- 维护者:Peter Baumgartner (https://github.com/ipmb/)
- 原始创作者:Rich Jones (https://github.com/Miserlou/)
此包主要由Wharton Research Data Services的工作人员维护。我们非常高兴沃顿商学院允许我们在开源项目中投入一定的时间。我们根据项目需要添加功能,并尽可能跟上问题和拉取请求。由于时间限制(我们的全职工作!),没有拉取请求的功能请求可能无法实现,但我们始终欢迎新想法,并对贡献者和我们的包用户表示感激。
构建 _sqlite3.so 的说明
如果您想使用此存储库中提供的Python或SQLite的版本,您需要自己构建静态二进制文件。以下说明显示了如何构建文件:https://charlesleifer.com/blog/compiling-sqlite-for-use-with-python-applications/
下载SQLite后,按照说明将其安装到虚拟环境中。您必须在Amazon Linux或CentOS 7(Amazon Linux基于此)上执行安装。