没有项目描述
dj-pgnosql的Python项目详细描述
pg nosql
使用postgres作为nosql数据库。旨在在不同的Django项目之间提供共享存储空间
安装
pip install dj-pgnosql
注意:这个包没有指定任何需求,但是假设您的项目设置为在django版本中使用postgres,该版本支持JSONField
- 在settings.py中添加
pgnosql
到INSTALLED_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
你们都准备好了。
用法
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支持
- 。