没有项目描述

dj-pgnosql的Python项目详细描述


pg nosql

使用postgres作为nosql数据库。旨在在不同的Django项目之间提供共享存储空间

安装

PyPI version

pip install dj-pgnosql

注意:这个包没有指定任何需求,但是假设您的项目设置为在django版本中使用postgres,该版本支持JSONField

  • 在settings.py中添加pgnosqlINSTALLED_APPS

建议使用(使用自定义数据库)

我们建议您将pgnosql配置为使用与项目默认数据库不同的数据库。

我们的想法是,您可能有多个django项目连接到这个kv存储,以方便在服务之间共享数据

配置单独的数据库连接:

settings.py

DATABASES={'default':{'ENGINE':'django.db.backends.postgresql_psycopg2','NAME':os.environ.get('DATABASE_NAME','postgres'),'USER':os.environ.get('DATABASE_USER','postgres'),'HOST':os.environ.get('DATABASE_HOST','postgres'),'PORT':5432,},'pgnosql':{# <- this is our nosql db'ENGINE':'django.db.backends.postgresql_psycopg2','NAME':os.environ.get('NOSQL_DATABASE_NAME','postgres'),'USER':os.environ.get('NOSQL_DATABASE_USER','postgres'),'HOST':os.environ.get('DATABASE_HOST','postgres'),'PORT':5432,}}

添加数据库路由器

DATABASE_ROUTERS=['pgnosql.routers.NoSQLRouter']

如果模型来自pgnosql应用程序,此路由器将向nosql数据库发送查询。否则将发送到默认数据库

运行迁移:

您需要指定为pgnosql数据库运行它们。

web python manage.py migrate pgnosql --database=pgnosql

你们都准备好了。

Shared access between two services

用法

frompgnosql.modelsimportKVkey="foo"value={"bar":"bus"}KV.set(key,value)# value must be jsonKV.get(key)# {"bar": "bus"}KV.delete()

显然,您也可以使用django的标准orm

模型字段:

key=models.CharField(max_length=100,db_index=True)value=JSONField(default=dict)index=models.CharField(max_length=255,db_index=True,help_text='You can provide an index to make this key searchable')time_to_live=models.PositiveIntegerField(default=0)created_date=models.DateTimeField(auto_now_add=True)modified_date=models.DateTimeField(auto_now=True)

子模块

dj=pgnosql supplies a few sub-modules for dealing with Specific use-cases

全球用户

A shared user object

# Get a userfrompgnosql.userimportGlobalUseruser_id=1user=GlobalUser(user_id)# set arbitary data on a user:user_data={"foo":"bar"}user.set(user_data)user.get()>>{"foo":"bar"}

饲料

待定

指标

待定

版本控制注意事项:

x.y.z
| | |__ Patch
| |____ Minor
|______ Major
  • 补丁:调整,改进和错误修复-向后兼容。在API接口中包含新功能-但不更改它
  • 未成年人:对现有API接口的修改
  • 主要:对db schema/django模型的更改

开发

测试

带Docker(推荐)

docker-compose run --rm web python manage.py test

生成规范文档:

docker-compose run --rm web python manage.py test --testrunner=testreporter.runner.BDDTestRunner

spec.txt

常见问题解答

为什么不使用redis或mongo之类的工具呢?

我们建立这个图书馆的主要动机是对django的postgres的大力支持。在大多数情况下-如果您已经在使用django-您将能够使用这个库而不需要额外的依赖项。

您还可以获得所有Django内置的Postgress支持,包括:

  • 易于测试
  • 在中烘焙配置
  • 你可能已经在用postgres了。现在您不需要再添加一台机器
  • Django管理支持
  • django orm支持

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java InputStream对象在声明后关闭   java未定义名为“transactionManager”的bean重命名transactionManager   java“jar”命令何时会拒绝将类添加到java中。jar文件?   java JPA标准依赖WHERE子句   安卓中从SD卡读取文本文件时出现java错误   java直接启用类似位置的权限   使用@WebMvcTest和Mockito-BDDMockito对SpringBoot-RestController进行java测试   java JSESSIONID存储在哪里?   java jtextarea鼠标事件覆盖容器鼠标事件   java DRL无法解析动态加载的类   java是从一个方法返回多个对象的最简单方法   java自定义按钮/编辑框是否不可见?   java GUI如何在保存用户输入的同时在面板或框架之间切换   swing Java自定义JSlider不会更新   GridBagLayout中的java超过1个JPanel   java从ProjectReactor中的flux中采样除第一个元素外的所有元素   Java泛型和泛型类型   Java代码生成宽指令的jvm