我可以dumpdata
在一个模型上执行一个Django,而不是整个应用程序,如果是这样,怎么样?
对于一个应用程序,它将是:
python manage.py dumpdata myapp
Run Code Online (Sandbox Code Playgroud)
但是,我想要一些特定的模型,例如"myapp.mymodel"被转储.原因是,我有一些巨大的,300万条记录,数据集在同一个应用程序中,我不喜欢转储.
我正在尝试使用dumpdata为数据库生成JSON,该数据库足够大,django需要很长很长时间才能输出.有没有办法只转储一部分字段; 比方说,100,进行测试?
我正在使用MySQL和Django 1.0.
当我尝试将数据转储到我的实时服务器上的Djanog 1.2.1中的JSON夹具时,我收到错误.在实时服务器上,它运行MySQL Server版本5.0.77,我使用phpMyAdmin接口将大量数据导入到我的表中.该网站工作正常,Django管理员正常响应.但是,当我尝试实际转储与表对应的应用程序的数据时,我收到此错误:
$ python manage.py dumpdata --indent=2 gigs > fixtures/gigs_100914.json
/usr/local/lib/python2.6/site-packages/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated
from sets import ImmutableSet
Error: Unable to serialize database: Location matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
我正在尝试转储的'gigs'的Django模型在models.py文件中看起来像这样:
from datetime import datetime
from django.db import models
class Location(models.Model):
name = models.CharField(max_length=120, blank=True, null=True)
class Meta:
ordering = ['name']
def __unicode__(self):
return "%s (%s)" % (self.name, self.pk)
class Venue(models.Model):
name = models.CharField(max_length=120, blank=True, null=True)
contact = models.CharField(max_length=250, blank=True, null=True)
url = models.URLField(max_length=60, verify_exists=False, blank=True, null=True) …
Run Code Online (Sandbox Code Playgroud) 有没有一种从数据库转储UTF-8数据的简单方法?
我知道这个命令:
manage.py dumpdata > mydata.json
Run Code Online (Sandbox Code Playgroud)
但是我在mydata.json文件中得到的数据,Unicode数据看起来像:
"name": "\u4e1c\u6cf0\u9999\u6e2f\u4e94\u91d1\u6709\u9650\u516c\u53f8"
Run Code Online (Sandbox Code Playgroud)
我想看一个真正的Unicode字符串,如????????
(中文).
我试图使用该call_command
方法来调用dumpdata command
.手动,我按如下方式使用它将数据保存到文件中.
python manage.py dumpdata appname_one appname_two > /path/to/save/file.json
Run Code Online (Sandbox Code Playgroud)
它保存了json文件.现在,我处于需要使用该call_command
方法调用此命令的情况.
我可以使用以下命令从命令打印出json:
from django.core.management import call_command
call_command('dumpdata', 'appname_one', 'appname_two')
Run Code Online (Sandbox Code Playgroud)
有没有办法可以将给定的数据保存到文件中,就像我们从命令行那样做?
我正在尝试将我的数据库(sqlite3)转储到一个夹具的json文件,但是我有一个非托管模型导致no such table
错误(显然!)所以你如何在db中使用这些模型dumpdata?
模型:
from django.db import models
class Backup(models.Model):
"""
This class is lazily recycled between various forms that ask the user to
provide a path to some data.
"""
dbloc = models.CharField(
max_length = 255
)
class Meta:
app_label = 'myApp'
db_table = 'backup'
managed = False
Run Code Online (Sandbox Code Playgroud)
错误:
CommandError: Unable to serialize database: no such table: backup
我不确定这个问题是应该发布在数据库管理员部分还是这里,所以请告知我是否错了.
我有一个基于Django的网站,它没有太大变化.如果我需要重新部署或数据库损坏,我使用python manage.py dumpdata --all --indent=2 > backup.json
并重新加载数据loaddata
.(我知道什么时候不排除出现完整性错误auth
和content_types
)
由于我在后端使用PostgreSQL,我使用它是"最佳实践"还是"更明智" pg_dump
,然后pg_restore
如果出现问题或需要重新部署?
因此,dumpdata
转储与所选应用程序(和/或模型)关联的所有数据,并pg_dump
执行数据库的完全转储.这是同一件事还是我错过了一个根本的区别(请注意,我对DBA有0次经验)?
我选择哪个选项以及为什么?
我使用通用外键将不同的配置文件与我Users
继承的模型相关联auth.User
.dumpdata
虽然通过了--natural
选项,但我无法做到.它说,
错误:无法解析序列化应用程序列表中myproject.AdminProfile,myproject.TeacherProfile,myproject.Users的依赖项.
根据文档,据说我们需要实现natural_key方法来获取和闪存涉及通用关系的灯具.我怎么能用这里展示的模型做到这一点?
class Users(User):
location = models.TextField('Location', blank=True)
created_by = models.ForeignKey('self', null=True, blank=True, related_name='created_by_user')
# Generic foreign key setup to hold the extra attributes
profile_contenttype = models.ForeignKey(ContentType, null=True, blank=True)
profile_object_id = models.PositiveIntegerField('Extra ID', null=True, blank=True)
profile_object = generic.GenericForeignKey('profile_contenttype', 'profile_object_id')
class AdminProfile(models.Model):
organization = models.CharField('Organization', max_length=100)
# profile reverse relation to get the user
users_link = generic.GenericRelation('Users', content_type_field='profile_contenttype',
object_id_field='profile_object_id')
class TeacherProfile(models.Model):
designation = models.CharField('Designation', max_length=100)
# profile reverse …
Run Code Online (Sandbox Code Playgroud) generics django foreign-key-relationship natural-key dumpdata
我最近决定要从MySQL切换到Postgres,因为我遇到了一些问题,这在Postgres上永远不会成为问题.
但是,我似乎无法找到一个很好的迁移方式我已经看了py-mysql2pgsql然而这导致数据库中的问题,我无法追查.
我也使用django-admin.py查看了dumpdata和loaddata,但是我的数据库相当大,它消耗了我所有的内存并且简单地崩溃了所以我转移到了django-dumpdata-chunks,这只是错误,但是再次projec是两年旧.
我要问的是,这里的任何人都知道一个很好的可靠方法从mysql迁移到postgres而不破坏数据库,如果没有停机时可以作为奖励吗?
在这个问题中,我dumpdata
为我的数据库设置了一个基于备份的系统.该设置类似于运行调用dumpdata
并将备份移动到远程服务器的cron脚本,目的是简单地使用loaddata
恢复数据库.但是,我不确定它是否适合迁移.loaddata
现在有一个ignorenonexistent
开关来处理已删除的模型/字段,但它无法解决使用一次性默认值或应用RunPython
代码添加列的情况.
我看到它的方式,有两个子问题需要解决:
dumpdata
使用每个应用程序的当前版本标记每个输出文件我不知道如何在不引入大量开销的情况下解决第一个问题.是否足以为每个包含{app_name: migration_number}
映射的备份保存额外的文件?
一旦第一个问题得到解决,我认为第二个问题就更容易了,因为这个过程大致是:
loaddata
使用给定的fixture文件调用这个问题中有一些代码(从错误报告中链接),我认为可以为此目的进行调整.
由于这些是数据库的相当规则/大型快照,因此我不希望将它们作为数据迁移使迁移目录混乱.