Django + PostgreSQL:使用外部源同步数据库

时间:2014-02-17 18:44:31

标签: sql database django postgresql data-synchronization

我正在寻找一种方法来将数据库中的某些表与外部源同步。我会每隔几个小时检查一次外部源是否有变化,如果有的话,我会更新我的数据库。

我的问题是,如果有人知道现有的应用程序,它接受某种数据结构(python dict)并将其转换为数据库条目?

这是一个例子:假设我有以下模型:

class Language(models.Model):
    tag = models.CharFieldmax_length=10)
    name = models.CharField(max_length=50)

class Unit(models.Model):
    label = models.CharField(max_length=10)
    name = models.CharField(max_length=200)

class UnitTranslations(models.Model):
    unit = models.ForeignKey(Unit)
    language = models.ForeignKey(Language)
    name = models.CharField(max_length=200)

所以我可以有相应的数据,如下所示:

data = [
    {
        "label": "AB",
        "name": "some random name",
        "translations": [
            {
                "name": "some random name in german",
                "language": {
                    "tag": "de",
                    "name": "german"
                }
            },
            {
                "name": "some random name in spanish",
                "language": {
                    "tag": "es",
                    "name": "spanish"
                }
            },
        ]
    },
    {
        "label": "OR",
        "name": "some other random name",
        "translations": [
            {
                "name": "some other random name in german",
                "language": {
                    "tag": "de",
                    "name": "german"
                }
            },
            {
                "name": "some other random name in spanish",
                "language": {
                    "tag": "es",
                    "name": "spanish"
                }
            },
        ]
    },
]

所以,我想采用这种结构(加上一些关于实际模型的元信息,哪些属性可以看作ID等等),并让我的程序自动更新必要的表。

为了完成我的例子,这些是简短的需要执行的主要步骤:

  • 已经是标有“AB”的单位? (否则创建它)
  • 它的名称是“某个随机名称”吗? (否则改变它)
  • 我们有德语和西班牙语吗? (否则创建它们)
  • 我们有德语和西班牙语的翻译吗? (否则创建它们)
  • 这些翻译是“德语中的一些随机名称”和“西班牙语中的一些随机名称”吗? (否则改变它们)

但当然,结构可能更复杂。这就是为什么我会感谢每一个让我的生活更轻松的图书馆或应用程序(或想法)。

0 个答案:

没有答案