2014-09-11 47 views
0

请帮忙解决问题。如何填写数据表?

python3.4,django1.6。 我试图把数据存入数据库从文件initial_data.json

python manage.py syncdb --all 

表创建命令之后,但是从文件initial_data.json的数据将不进表。这里的控制台输出:

(ds_d16)[email protected] ~/.virtualenvs/ds_d16/django_projects/drummersaransk_new $ python manage.py syncdb --all 
Syncing... 
Creating tables ... 
Creating table django_admin_log 
Creating table auth_permission 
Creating table auth_group_permissions 
Creating table auth_group 
Creating table auth_user_groups 
Creating table auth_user_user_permissions 
Creating table auth_user 
Creating table django_content_type 
Creating table django_session 
Creating table captcha_captchastore 
Creating table thumbnail_kvstore 
Creating table app_drummersaransk_city 
Creating table app_drummersaransk_status 
Creating table app_drummersaransk_gender 
Creating table app_drummersaransk_teacher 
Creating table app_drummersaransk_userprofile 
Creating table app_drummersaransk_pathglory 
Creating table app_drummersaransk_friends 
Creating table app_drummersaransk_message 
Creating table south_migrationhistory 

You just installed Django's auth system, which means you don't have any superusers defined. 
Would you like to create one now? (yes/no): yes 
Username (leave blank to use 'kalinins'): admin 
Email address: [email protected] 
Password: 
Password (again): 
Superuser created successfully. 
Installing custom SQL ... 
Installing indexes ... 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line 
    utility.execute() 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/base.py", line 242, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/base.py", line 285, in execute 
    output = self.handle(*args, **options) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/base.py", line 415, in handle 
    return self.handle_noargs(**options) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/south/management/commands/syncdb.py", line 92, in handle_noargs 
    syncdb.Command().execute(**options) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/base.py", line 285, in execute 
    output = self.handle(*args, **options) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/base.py", line 415, in handle 
    return self.handle_noargs(**options) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/commands/syncdb.py", line 162, in handle_noargs 
    database=db, skip_validation=True) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/__init__.py", line 159, in call_command 
    return klass.execute(*args, **defaults) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/base.py", line 285, in execute 
    output = self.handle(*args, **options) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/commands/loaddata.py", line 55, in handle 
    self.loaddata(fixture_labels) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/commands/loaddata.py", line 84, in loaddata 
    self.load_label(fixture_label) 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/management/commands/loaddata.py", line 134, in load_label 
    for obj in objects: 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/site-packages/django/core/serializers/json.py", line 65, in Deserializer 
    stream_or_string = stream_or_string.read() 
    File "/home/kalinins/.virtualenvs/ds_d16/lib/python3.4/codecs.py", line 313, in decode 
    (result, consumed) = self._buffer_decode(data, self.errors, final) 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 86: invalid continuation byte 
+0

您的夹具文件在某种程度上不正确。 Django希望它是unicode输入,但显然不是。另见http://stackoverflow.com/questions/5552555/unicodedecodeerror-invalid-continuation-byte。 – Evert 2014-09-11 08:37:49

+0

谢谢!问题在utf8中 – dert 2014-09-11 08:47:12

回答

0

使用初始json数据是一个皮塔饼,根据我的经验。使用sql插入创建初始值比较容易。从初始值的数据库中进行一次sql转储,并将它们转换为每个模型的单独.sql文件。将这些放置在正确的应用程序的文件夹中。

所以它可能是这样的:
- foo (your app) - sql (the sql folder *with* __init__.py) - bar.sql (your Bar model insert sql's)

试试这个。