0

现在我正在 Django 下开发一个应用程序,它是用于仓库管理的 ERP。主要应用程序是使用 SAP Business One 制作的。我可以访问 SAP(MSSQL Server)中的表,但我需要在 DJANGO 数据模型表中使用 SAP 中的表项来构建仓库管理,例如:我需要将 Django 中的 DataModel 表项与表项 SAP 同步,而不是反向(DJANGO - > SAP 中的项目 [否!])。

将 Django 中的 DataModel 与其他数据库系统或表同步的最佳方法是什么?

我想在 Django 数据库中保持一致性,因为如果在 SAP 中的 Item 表中更改某些内容,例如 Item Active(true 或 false),此更改将反映在 Django 模型中。

所以,如果 SAP Table 中有一个新的 Item,它必须在 Django DataModel Table 中。

我正在尝试简单的 Django 模型来维护它:

class Items(models.Model):
    SapCode         =models.CharField(max_length=100)
    Name            =models.CharField(max_length=250)
    Group           =models.IntegerField()
    Active          =models.BooleanField()

我只跟踪以下方面的变化:

  • 新项目(新代码)

  • 名称的变化。

  • 组的变化。

  • 更改活动状态

提前致谢!。

4

2 回答 2

1

Django 中确实没有“数据同步的最佳方法”。

真的,这都是关于如何设计数据模型的。

一些提示:

  1. 找出每个对象的源系统唯一标识符。通常这只是“id”之类的东西。
  2. 总是,总是,在你的模型上存储一个创建和修改的日期。这将使同步更容易。我通常这样做:

    created_on = models.DateTimeField('Created On', auto_now_add=True)
    last_modified = models.DateTimeField('Last Modified', auto_now=True)
    
  3. 有了这两个位(以及您需要存储的所有其他字段),只需编写代码即可从源系统中检索所有记录并根据您拥有的记录检查它们。这将是一个乏味的过程,并且完全是手动的。这种类型的项目没有“django-magic-model-sync”的东西。只是从源中获取记录、对照数据存储检查它们并更新需要更新的内容的艰苦工作。

  4. 你可能会想要使用 Celery,因为我想你会想要每隔 X 分钟、几小时、几天或其他任何时间进行一次同步。因此,您需要编写一个执行 #3 的 Celery 任务。
于 2013-02-26T09:11:22.120 回答
0

您可以将 Django 与多个数据库一起使用。

DATABASES = {
    'default': {
        'NAME': 'app_data',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'postgres_user',
        'PASSWORD': 's3krit'
    },
    'items': {
        'NAME': 'items_data',
        'ENGINE': 'django.db.backends.mysql',# or what ever Engine 
        'USER': 'mysql_user',
        'PASSWORD': 'priv4te'
    }

}

并且您只能同步专用数据库。

./manage.py syncdb --database=items

在您的模型中,您可以像这样使用:

Items.objects.using('items').all()
于 2013-07-18T02:09:21.580 回答