使用Django与Spanner交互的桥梁。
项目描述
Cloud Spanner 是世界上第一个提供强一致性和水平扩展的完全托管的关系型数据库服务,适用于关键在线事务处理 (OLTP) 应用程序。使用 Cloud Spanner,您可以享受关系型数据库的所有传统好处;但与任何其他关系型数据库服务不同,Cloud Spanner 可以水平扩展到数百或数千个服务器,以处理最大的事务性工作负载。
快速入门
为了使用此库,您首先需要完成以下步骤
本软件包提供了一种第三方数据库后端,用于在Django ORM中使用Cloud Spanner。它内部使用了Cloud Spanner Python客户端库。
安装
使用pip在virtualenv中安装此库。virtualenv是一个用于创建隔离的Python和Django环境的工具。它解决的基本问题是依赖关系和版本,以及间接的权限问题。
使用virtualenv,可以在不需要系统安装权限的情况下安装此库,且不会与已安装的系统依赖冲突。
支持的版本
该库支持Django 2.2和Django 3.2。这两个版本都是Django项目的长期支持(LTS)版本。所需的最低Python版本是3.6。
pip3 install django==3.2
安装软件包
从PyPI安装
pip3 install django-google-spanner
从源码安装
git clone git@github.com:googleapis/python-spanner-django.git
cd python-spanner-django
pip3 install -e .
创建Cloud Spanner实例和数据库
如果您还没有Cloud Spanner数据库,或者想要为新的Django应用程序从头开始,可以使用Google Cloud SDK 创建一个新的实例和数据库。
gcloud spanner instances create $INSTANCE --config=regional-us-central1 --description="New Django Instance" --nodes=1
gcloud spanner databases create $DB --instance $INSTANCE
配置settings.py
此软件包提供名为django_spanner的Django应用程序。要使用Cloud Spanner数据库后端,需要安装和配置该应用程序。
将django_spanner作为INSTALLED_APPS的第一个条目添加
INSTALLED_APPS = [ 'django_spanner', ... ]
编辑DATABASES设置以指向现有的Cloud Spanner数据库
DATABASES = { 'default': { 'ENGINE': 'django_spanner', 'PROJECT': '$PROJECT', 'INSTANCE': '$INSTANCE', 'NAME': '$DATABASE', } }
自动提交模式下的事务支持
默认情况下,Django 4.2及更高版本支持自动提交模式下的事务。如果您定义了[原子块](https://docs.django.ac.cn/en/4.2/topics/db/transactions/#controlling-transactions-explicitly),则会自动启动一个事务。
Django 3.2及更早版本不支持Spanner的自动提交模式下的事务。您可以使用配置选项ALLOW_TRANSACTIONS_IN_AUTO_COMMIT来启用Spanner的自动提交模式下的事务。
要在V3.2中启用自动提交模式下的事务,请在settings.py文件中将标志ALLOW_TRANSACTIONS_IN_AUTO_COMMIT设置为True。
要在V4.2中禁用自动提交模式下的事务,请在settings.py文件中将标志ALLOW_TRANSACTIONS_IN_AUTO_COMMIT设置为False。
设置凭据和项目环境变量
您需要下载一个服务帐户JSON密钥文件,并使用环境变量指向它
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/keyfile.json
export GOOGLE_CLOUD_PROJECT=gcloud_project
应用迁移
请运行以下命令
$ python3 manage.py migrate
运行可能需要一些时间。在此之后,您应该在Cloud Spanner控制台中看到创建的表和索引。
创建Django管理员用户
首先,您需要创建一个可以登录管理员站点用户。运行以下命令
$ python3 manage.py createsuperuser
这将提示您创建超级用户
Username: admin
Email address: admin@example.com
Password: **********
Password (again): **********
Superuser created successfully.
以管理员身份登录
然后,运行服务器
python3 manage.py runserver
创建并注册您的第一个模型
请按照https://docs.django.ac.cn/en/2.2/intro/tutorial02/#creating-models中的指南创建模型并将其注册到Django自动生成的管理员站点。
它的工作原理
整体设计
内部结构
执行查询
以下是一个如何为“模型作者”添加行、保存并使用Django查询它的示例。
>>> author_kent = Author( first_name="Arthur", last_name="Kent", rating=Decimal("4.1"),)
>>> author_kent.save()
>>> qs1 = Author.objects.all().values("first_name", "last_name")
如何贡献
对本文库的贡献总是受欢迎且受到高度鼓励。
有关如何开始的更多信息,请参阅CONTRIBUTING。
请注意,该项目以贡献者行为准则发布。通过参与此项目,您同意遵守其条款。有关更多信息,请参阅行为准则。
限制
Spanner有其自己的某些限制。完整的限制列表已记录在此。建议您查看该列表。
Django spanner也有自己的限制,您可以在此处找到。
在Django-spanner中不受支持的spanner功能列表在此。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
哈希值 for django_google_spanner-4.0.1-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd31b856c9cfa63f91aa69bd0824a5fbc138aa517c20214ebdeeefbe08eb8a4a |
|
MD5 | 3d00e146f71ecddd03d51478e1f14cd1 |
|
BLAKE2b-256 | 263604391f82624940aac6087c9ef4975670d4d7662631aa96f889afc1b6d066 |