psycopg2.ProgrammingError,运行脚本从postgres序列化Django应用程序的数据

2024-04-25 13:41:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个djano web app,它将一些条目的数据存储到postgres db。要将数据库中的数据复制到json files,我通常使用python manage.py shell并使用django教程中提到的序列化api。在

>>>python manage.py shell
...
In[8]:from myapp.models import MyFirstModel
In[9]:data = serializers.serialize("xml", MyFirstModel.objects.all())
In[10]:print data

我将此输出复制到某个文本文件并将其另存为json。在

我想写一个剧本

在数据拷贝.py ........ 在

^{pr2}$

从bash shell,我试过了

>>python datacopy.py

但是,这只写用户模型的数据,无法复制我在应用程序中创建的模型。在

我收到的错误信息

Traceback (most recent call last):
  File "datacopy.py", line 29, in <module>
    write_data_to_file()
  File "datacopy.py", line 23, in write_data_to_file
    xml_serializer.serialize(MyFirstModel.objects.all(), stream=out)
  File "/home/me/Django-1.1.1/django/core/serializers/base.py", line 38, in serialize
    for obj in queryset:
  File "/home/me/Django-1.1.1/django/db/models/query.py", line 106, in _result_iter
    self._fill_cache()
  File "/home/me/Django-1.1.1/django/db/models/query.py", line 692, in _fill_cache
    self._result_cache.append(self._iter.next())
  File "/home/me/Django-1.1.1/django/db/models/query.py", line 238, in iterator
    for row in self.query.results_iter():
  File "/home/me/Django-1.1.1/django/db/models/sql/query.py", line 287, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/home/me/Django-1.1.1/django/db/models/sql/query.py", line 2369, in execute_sql
    cursor.execute(sql, params)
  File "/home/me/Django-1.1.1/django/db/backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: relation "myapp_myfirstmodel" does not exist

当我使用python manage.py shell时,我能够复制所有三个模型的数据。为什么当我从bash运行脚本时会发生这个错误?我在PYTHONPATH中有myapp的模块


Tags: 数据djangoinpyselfhomeexecutedb
1条回答
网友
1楼 · 发布于 2024-04-25 13:41:57

你查过用过吗/管理.py转储数据?可以指定序列化格式。在

为了使脚本正常工作,您是否将DJANGO_设置设置为正确的设置.py? 在

其次,在函数内部执行导入操作是否有原因,最好将其移到文件头:

from django.core import serializers
from django.contrib.auth.models import User
from myapp.models import MyFirstModel
from myapp.models import MyNextModel

def write_data_to_file():
    XMLSerializer = serializers.get_serializer("json")
    xml_serializer = XMLSerializer()
    out = open(filename,"a")

相关问题 更多 >