Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python psycopg2.ProgrammingError,正在运行脚本从postgres序列化django应用程序的数据_Python_Django_Serialization - Fatal编程技术网

Python psycopg2.ProgrammingError,正在运行脚本从postgres序列化django应用程序的数据

Python psycopg2.ProgrammingError,正在运行脚本从postgres序列化django应用程序的数据,python,django,serialization,Python,Django,Serialization,我有一个djano web应用程序,它将一些条目的数据存储到postgres db。要将db中的数据复制到json文件s,我通常使用python manage.py shell,并使用django教程中提到的序列化api >>>python manage.py shell ... In[8]:from myapp.models import MyFirstModel In[9]:data = serializers.serialize("xml", MyFirstModel.o

我有一个
djano web应用程序
,它将一些条目的数据存储到
postgres db
。要将db中的数据复制到
json文件
s,我通常使用
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

我想写一个脚本来做这件事,并尝试了

datacopy.py

从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
回溯(最近一次呼叫最后一次):
文件“datacopy.py”,第29行,在
将_数据_写入_文件()
文件“datacopy.py”,第23行,在write_data_to_文件中
xml_serializer.serialize(MyFirstModel.objects.all(),stream=out)
文件“/home/me/Django-1.1.1/Django/core/serializers/base.py”,序列化中的第38行
对于queryset中的obj:
文件“/home/me/Django-1.1.1/Django/db/models/query.py”,第106行,结果文件
self._fill_cache()
文件“/home/me/Django-1.1.1/Django/db/models/query.py”,第692行,在缓存中
self.\u result\u cache.append(self.\u iter.next())
迭代器中的文件“/home/me/Django-1.1.1/Django/db/models/query.py”,第238行
对于self.query.results\u iter()中的行:
文件“/home/me/Django-1.1.1/Django/db/models/sql/query.py”,第287行,在results\u iter中
对于self.execute_sql(多)中的行:
execute_sql中的文件“/home/me/Django-1.1.1/Django/db/models/sql/query.py”,第2369行
cursor.execute(sql,params)
文件“/home/me/Django-1.1.1/Django/db/backends/util.py”,执行中的第19行
返回self.cursor.execute(sql,params)
psycopg2.ProgrammingError:关系“myapp\u myfirstmodel”不存在

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

您是否考虑过使用./manage.py dumpdata?您可以指定序列化格式

为了让脚本正常工作,您是否已将DJANGO_设置设置为正确的SETTINGS.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")

我想这是因为DJANGO_的设置。谢谢提醒
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")