1

我在一个明显简单的任务上遇到了一个奇怪的错误。

我想使用 unicode 字符串和以下模型查询 sqlite DB:

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

请参阅:python - 使用 Django 将 Unicode 字符存储到 MySQL 时出现问题

于 2012-06-24T21:40:51.507 回答