Интересная ситуация. Ошибка базы данных? Python. Джанго - PullRequest
1 голос
/ 13 августа 2010

На тестовом сервере это работает.Но производство дает этот след: чем отличается?И что означает эта ошибка?

Отличается только в версиях Python.На тестовом сервере это 2.6.5 и производство 2.5.2.Как я могу избавиться от этой ошибки без изменения версии?

True
2008-10-16 15:20:00
 - did not match our database
Traceback (most recent call last):
  File "./mr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/core/management/base.py", line 222, in execute
    output = self.handle(*args, **options)
  File "/usr/local/cluster/dynamic/website/video/remmedia/management/commands/remmedia.py", line 50, in handle
    self.FirstTimeLoad()
  File "/usr/local/cluster/dynamic/website/video/remmedia/management/commands/remmedia.py", line 117, in FirstTimeLoad
    med,created=RemMedia.objects.get_or_create(index=program.Id+50000000, defaults=fields)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/manager.py", line 123, in get_or_create
    return self.get_query_set().get_or_create(**kwargs)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/query.py", line 335, in get_or_create
    obj.save(force_insert=True)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/base.py", line 410, in save
    self.save_base(force_insert=force_insert, force_update=force_update)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/base.py", line 495, in save_base
    result = manager._insert(values, return_id=update_pk)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/manager.py", line 177, in _insert
    return insert_query(self.model, values, **kwargs)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/query.py", line 1087, in insert_query
    return query.execute_sql(return_id)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/sql/subqueries.py", line 320, in execute_sql
    cursor = super(InsertQuery, self).execute_sql(None)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/models/sql/query.py", line 2369, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/django/db/backends/mysql/base.py", line 84, in execute
    return self.cursor.execute(query, args)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/MySQLdb/cursors.py", line 158, in execute
    query = query % db.literal(args)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/MySQLdb/connections.py", line 265, in literal
    return self.escape(o, self.encoders)
  File "/usr/local/cluster/dynamic/virtualenv/lib/python2.5/site-packages/MySQLdb/connections.py", line 198, in string_literal
    return db.string_literal(obj)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-10: ordinal not in range(128)

Через некоторое время подумав и испытав.Я замечаю, что ошибка появляется только тогда, когда я делаю это:

med,created=RemMedia.objects.get_or_create(index=program.Id+50000000, defaults=fields)

После некоторого времени размышлений и тестирования я обнаружил ошибку.Это в словаре fields.Есть одна переменная, которую я получаю из BeautifulSoup, код выглядит так:

                        soup=BeautifulSoup(program.Description.encode('utf-8'))
                        name=soup.find('div',{'class':'head'})
                        fields=dict(
                               name=name.string,
                               description=program.Description.encode('utf-8'),
                               program_name=program.Name.encode('utf-8'),
                               program_date_time=program.RealDateTime,
                               topic_data_time=program.RealDateTime,
                               topic_tag='',
                               created=program.Updated,
                               media=media
                                     )

Проблема с переменной name в словаре fields.

Остается вопрос: как преобразоватьтак не выдаст ошибку?

Ответы [ 2 ]

0 голосов
/ 27 марта 2013

Если проблема лежит в базе данных, возможно, это настройка.Если это внутри кода Python, вы можете попробовать поместить эту строку вверху вашего файла Python, который имеет дело со строкой.

0 голосов
/ 13 августа 2010

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-10: ordinal not in range(128)

У вас есть символ со значением ascii> 128?Возможно акцентированное письмо.

http://www.asciitable.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...