1

明らかに単純なタスクで奇妙なエラーが発生します。

Unicode文字列と次のモデルを使用してsqliteDBにクエリを実行したいと思います。

from django.db import models

class Uebersetzung(models.Model):
    artikel = models.CharField(max_length=100)
    deutsch = models.CharField(max_length=100)
    turk    = models.CharField(max_length=100)
    added   = models.DateTimeField(default=datetime.now)

クエリは「スタンドアロンスクリプト」で実行されます。私はdjangoのモデルとAPIのみを使用していますが、クエリは次のようになります。

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'turk.settings'
from turk.parse.models import *
...

   # each is a tuple of eg. (u'das', u'Haus', u'bina')
   try:
        Uebersetzung.objects.get(artikel=each[0],deutsch=each[1],turk=each[2])
    except Uebersetzung.DoesNotExist:
        tr =  Uebersetzung(artikel=each[0],deutsch=each[1],turk=each[2])
        tr.save()
        print "Adding \'%s %s -> %s\' to Uebersetzung" % (each[0],each[1],each[2]) 

次のようなエラーが発生します:

 File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
    state = deepcopy(state, memo)

何か案は?

4

1 に答える 1

0

解決策:BeautifulSoupを使用しているので、Unicodeにキャストする必要があります。

try:
    Uebersetzung.objects.get(artikel=unicode(each[0]),deutsch=unicode(each[1]),turk=unicode(each[2]))

参照:py​​thon-Djangoを使用してUnicode文字をMySQLに保存する際の問題

于 2012-06-24T21:40:51.507 に答える