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")