一些postgresql内省修复程序支持绑定到特定模式的postgresql用户,不同django安装在同一数据库上的多个模式。在模型声明中没有完全的模式支持(light)。

django-postgresql-light-schemas的Python项目详细描述


===========
django postgresql轻型模式支持
=========



图片::https://badge.fury.io/py/django_postgresql_light_schemas.svg
:目标:https://badge.fury.io/py/django_postgresql_light_schemas

。图片::https://travis-ci.org/regilero/django_postgresql_light_schemas.svg?branch=master
:目标:https://travis ci.org/regilero/django_postgresql_light_schemas

…图片::https://codecov.io/gh/regilero/django_postgresql_light_schemas/branch/master/graph/badge.svg
:目标:https://codecov.io/gh/regilero/django_postgresql_light_schemas

一些postgresql内省修复程序,以支持绑定到特定架构的postgresql用户,
对于不同的django安装,同一数据库中有多个架构ns.
在模型声明中没有完全的模式支持(light)。
基于模型表名hack和使用搜索路径变量的postgresql用户。

/django租户架构
-https://github.com/damoti/django postgres schema

那么,如果您不能在模型中声明scema,那么什么是轻型架构黑客支持?

假设您使用绑定到非"public"模式的postgres用户,**和/或**
使用*经典*技巧将模型表名破解为:

。代码块::python

(…)
类元:
managed=false
db_table='my_schema'"\"foo'

注意,通过使用一个
不以公共模式开头的"search_path"变量,您将得到在该列表的
第一个模式中设置的django表。**如果只使用一个模式,则不需要像我们在这里所做的那样修改
db_table'引用**。` my schema.`would be**implicit**
for postgresql.


,但如果在同一个django应用程序中使用多个schema,则可以对所有不受django迁移管理的表使用技巧。


。代码块::sql

--case1:您需要访问3个架构中的表
alter role"my_ango-pg-user"set search_ang_ang app,public,other";
--或case 2:表在您的架构中,优先级为,但您读取的内容也在公共架构上
alter role"my_ango-pg-user"set search_ang path="my_ang app,public";
--或者情况3(我们可以继续):您只访问一个模式
alter role"my_django-pg-user"set search_path="my_app";

除非您只使用一个
模式,并且您不攻击"db_table",否则您不能使用此黑客模型创建迁移。但是在这两种情况下(一种模式
不是公共的,或者在非默认模式上有几个模式和数据库表黑客),django
将**基本上**工作得很好。

这个模块将有助于覆盖未覆盖的小部分,即:

-您将能够使用外键针对这些被黑客攻击的模型进行迁移,
对于不使用此技巧的其他模型。
-如果所有Django应用程序都使用此模块,则可以在多个架构上安装多个Django应用程序,所有这些应用程序都共享同一数据库。
-事实上,在进行内省时,会将Django锁定在正确的架构上
并避免在"public"或"de"中锁定坏的内省。在
其他架构上检测内容。

d
不是过滤模式。所有的定义,为所有的TAbles,所有模式,在postgresql目录上都是可见的(在djangho 1.11上,一个查询正在过滤公共模式,另一个则没有过滤)。
因此,如果在同一个数据库上的不同模式上安装了多个django应用程序,则会看到rom所有已安装的django应用程序**在大多数查询中,
索引都是一样的,有时您会检测不到现有表或
索引(应用了公共模式过滤器),这是个大问题。
使用postgresql用户**授权**无法帮助您,即使用户h由于
只访问一个架构,因此所有定义都将在目录中可见。
此模块将修复所有目录查询,以将可见性限制为给定的
架构列表(如"public"和"my_app",或仅"my_app")。
-从托管TA生成外键引用时对非托管表使用"db_table"上的schema技巧"the `.""注入将重新应用于约束名称,从而阻止约束创建。


quickstart
--



install django postgresql light schemas support(或在requirements fi中使用它le)::



将其添加到"已安装的应用程序"中:

……代码块::python

installed_apps=(

'django_postgresql_light_schemas',




修复数据库连接设置以使用此模块而不是默认的
postgresql连接器(此模块继承此连接的大部分指导老师)。代码块::python

databases={
"默认":{
"引擎":"django_postgresql_light_schemas.engine"、
"名称":"我的应用程序"、
"选项":{
"选项":"-c search_path=foo,bar";如果未设置搜索路径
},
'用户':'我的应用程序用户',
(…)
},
}




最后,这是**必需的**同时,列出PostgreSQL用户能够访问的架构。因为我们将从模式中删除未在其中列出的所有信息。代码块::python

#支持的模式=('foo',)
如果同时支持foo和bar模式,则不要尝试使用foo.table1和bar.table1,但如果只在受支持的模式中声明"foo",则这不是问题。
受支持的模式=(
"public"、
"foo"、
"bar"



功能
——

-django 1.10&1.11
-修复postgresql内省以限制django的可见架构
-修复引用架构入侵数据库表名的外键名
-…(如果您发现其他问题,请报告!)

运行测试

::


source<;yourvirtualenv>;/bin/activate
(myenv)$pip install tox
(myenv)$tox


credits
----


呈现此包时使用的工具:

*Cookiecutter
*`Cookiecutter DjangoPackage`

。_ Cookiecutter:https://github.com/audreyr/Cookiecutter
。_` Cookiecutter djangopack`:https://github.com/pydanny/Cookiecutter djangopack





history
----


0.1.0(2018-01-30)
++++++++++++++++++

*首次试用版

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

推荐PyPI第三方库


热门话题
java如何在Android上的可访问文件夹中创建文件?(非根)   tomcat Unix脚本未使用Process Runtime在Java中运行   模拟器中的java Android AudioTrack速度异常   java是否创建具有特定@ConditionalOnProperty的注释?   java如何使用json数据从gridview中的URL加载图像?(类别和子类别)   ConcurrentHashMap的java锁定值对象   如何在具有额外属性的Java枚举上执行Javadoc?   java如何修复SocketException连接重置问题?   无附加表的java JPA实体继承   java Android应用程序在启动屏幕后崩溃   java如何将Arraylist保存到文件?   java restTemplate从restfull Web服务获取文件数组   java活动带布局隐藏导航栏   socket未接收任何内容的java BufferedReader