EVE SDE的可插拔django应用程序
armada-sde的Python项目详细描述
阿玛达SDE
Armada SDE是Django的一个可插入应用程序,它提供了使用FuzzySteve的PostgreSQL转储的模型和工具。它的 design允许您自动升级sde数据,并为其中包含的任何表生成新模型。
用法
直接从PYPI获取ARMADA SDE的最新版本:
pip install armada-sde
添加到django的settings.py
:
INSTALLED_APPS=[# ...'armada_sde',]
下载fuzzysteve的latest schema dump进行postgres并解压缩:
wget https://www.fuzzwork.co.uk/dump/postgres-schema-latest.dmp.bz2 bunzip2 postgres-schema-latest.dmp.bz2
导入转储文件
python manage.py pg_import_sde -f postgres-schema-latest.dmp
如果您想自己处理导入,请使用-s
运行pg_import_sde
,而不使用-f
。这将重命名表,
因此,更好地适应django的最佳实践。
导入后,需要将表从evesde架构移动到公共架构:
python manage.py pg_move_sde
现在您应该可以导入模型并使用它们:
fromdjango.dbimportmodelsfromarmada_sde.modelsimportInvType# Trit for the trit godtrit=InvType.objects.get(name='Tritanium')# Use it in your modelsclassShoppingListItem(models.Model):quantity=models.IntegerField(default=1)item=models.ForeignKey(InvType,on_delete=models.DO_NOTHING)
高级用法
生成模型
Armada_SDE配备了一套库存模型,通过Django的定制版本自动生成 inspectdb命令。如果您愿意,可以生成自己的模型集并进行自己的修改。首先,导入 如前所述转储,因此它出现在evesde架构中。然后可以生成模型文件:
python manage.py pg_generate_models -o project/myapp/models.py
生成之后,使用pg_move_sde
命令将表移动到公共模式并生成主键。
你现在可以做任何你喜欢的改动。如果要为模型生成迁移,请删除
managed = False
来自元类。
如果需要,还可以通过配置
Armada_SDE将加载您的自定义变体,而不是库存模型。将此添加到您的settings.py
:
ARMADA={'SDE':{'module':'project.myapp.models'}}
从armada_sde.models
导入模型的任何其他应用程序都将从项目中加载自定义模型。
为sde使用自定义模式
如果要在多个项目之间共享数据库,则为sde提供共享架构可能很方便。你可以 将armada sde配置为使用表的自定义目标模式,而不是将表从evesde移动到public。
为此,请在settings.py
:
ARMADA={'SDE':{'schema':'<your_sde_schema>'}}
使用evesde模式作为自定义模式不是一个好主意,因为它可能会在升级 SDE公司。