【问题标题】:Fixture not loaded into psql database - Django夹具未加载到 psql 数据库中 - Django
【发布时间】:2021-08-19 19:03:24
【问题描述】:

我遇到了一个问题,我无法使用 loaddata 方法将我的夹具数据加载到我的 psql 数据库中。我没有收到任何错误,但是当我写:python manage.py loaddata whole.json 它说我有Installed 111 object(s) from 1 fixture(s) 但是当我登录到 psql 数据库时,我发现所有表都没有任何数据。

代码示例

我正在使用以下代码:

Settings.py

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.postgresql_psycopg2',

        'NAME': 'db_name',

        'USER': 'user_name',

        'PASSWORD': config('DB_PASSWORD'),

        'HOST': 'localhost',

        'PORT': '5432',
    }
}

信号.py

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if kwargs['raw']:
        return
    if created:
        ...

详情

我已按照本文https://medium.com/djangotube/django-sqlite-to-postgresql-database-migration-e3c1f76711e1 中的每一步操作。我唯一不同的是安装 psycopg2-binary 包。如果您需要更多详细信息、代码示例或说明,您可以直接询问。

有谁知道为什么夹具没有加载到我的 psql 数据库中?提前谢谢你。

【问题讨论】:

  • 看来commit 不见了。您的应用程序有一个关闭的自动提交选项,或者您需要在代码中包含提交。在if created 测试之后,也许在...的某个地方。请发布实际执行插入的代码。

标签: python django postgresql


【解决方案1】:

在调查了我的设备后,我很快意识到我不小心为我的新 psql db 创建了一个转储文件...

发生这种情况的原因是我第一次尝试加载数据时出现主键重复错误。这意味着我必须再次使用带有 --natural-foreign 和 --natural-primary 选项的 dumpdata 方法。我只是忘记将我的默认数据库设置改回初始的 sqlite db,所以我得到了我的新 psql db 的装置......不是我最自豪的时刻......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 2023-03-03
    • 2018-03-03
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多