1. iznogood

    31.10.2011

    0 ↑
    0 ↓
    Приветствую Всех. Я подключаюсь к БД (MS SQL 2005)
        'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'MEDIALOG',
    'USER': '',
    'PASSWORD': '',
    'HOST': 'OFFICE-MANAGER\SQLEXPRESS',
    'PORT': '',
    'OPTIONS' : {'unicode_results':True,}
    }
    }
    во view пишу
    def showpage_table(request):	
    curs = connection.cursor()
    curs.execute('DECLARE @RC int; EXECUTE @RC = [MEDIALOG].[dbo].[pl_GetModelsList]')
    rows = curs.fetchall()
    request.decode = 'utf8'
    return render_to_response('default.html', locals(), RequestContext(request))
    И все это дело вывожу в шаблон, НО....все русские символы у меня в unicode (т.е. не отображаются русские строки). Вот решил сделать свой шаблонный тег для encode. Направьте на путь истинный с чего начать или как нибудь можно решить эту проблему.
  2. Я бы дописал драйвер, чтобы он отдавал нормальный utf-8

  3. iznogood

    01.11.2011

    0 ↑
    0 ↓
    Аркадий, конечно было бы хорошо, а какие еще есть варианты?....мб есть каике то команды? читал что после коннекта в execute добавить "set names utf8" или "set character set utf8"....но драйвер ODBC ругается....
  4. iznogood

    01.11.2011

    0 ↑
    0 ↓
    Например, вот какой можно написать шаблон? для перекодировки.
    я попробовал и сделал примерно так
    register = Library()

    @register.filter(name='code')
    def code(rows):
    curs = connection.cursor()
    curs.execute('DECLARE @RC int; EXECUTE @RC = [MEDIALOG].[dbo].[pl_GetModelsList]')
    rows = curs.fetchall()
    return rows.encode("UTF-8")
    Но все равно все русские симмволы выводится в unicode.
  5. iznogood

    01.11.2011

    0 ↑
    0 ↓
    Вот как решила проблема (ну для меня на половину)
    @register.filter(name='code')
    def code(rows):
    curs = connection.cursor()
    curs.execute('DECLARE @RC int; EXECUTE @RC = [MEDIALOG].[dbo].[pl_GetModelsList]')
    rows = curs.fetchall()
    return u'%s' % (rows[2][1])
    как сделать чтоб выбиралось второе значение всегда [1], а первое шло по циклу сколько есть, есть конечно предположения что через цикл while. Мб что нибудь подскажете.
  6. iznogood, не надо пытаться программировать методом тыка. Тем более, задача у Вас не самая распространенная. Почитайте про итераторы в Питоне и посмотрите все же код драйвера.

  7. iznogood

    01.11.2011

    0 ↑
    0 ↓
    Аркадий Чумаченко, почитал просмотрел, но все такие не могу понять как решить мне эту проблему?
    def code(rows):
    curs = connection.cursor()
    curs.execute('DECLARE @RC int; EXECUTE @RC = [MEDIALOG].[dbo].[pl_GetModelsList]')
    rows = curs.fetchall()
    for i in range(len(rows))

    return u'%s' % (rows[1])
    если за места return пишу print то все проходит по циклу как надо, а с return выводится первое значение или послед значение смотря где находится return в цикле или нет.
    Как сделать, чтоб показало весь список с данными индексами. Спасибо
  8. iznogood

    01.11.2011

    0 ↑
    0 ↓
    def code(rows):
    curs = connection.cursor()
    curs.execute('DECLARE @RC int; EXECUTE @RC = [MEDIALOG].[dbo].[pl_GetModelsList]')
    rows = curs.fetchall()
    for j in range(len(rows))

    return u'%s' % (rows[j])
    Да и драйвер мне кажется я не осилю! :(...не на столько я опытен в данной сфере :(
  9. igorekk

    01.11.2011

    0 ↑
    0 ↓
    iznogood, почитайте книжки по программированию. Иначе этот топик будет вечным.
  10. iznogood

    01.11.2011

    0 ↑
    0 ↓
    igorekk, читал, но примеров кода не где нету, проблема в том, что БД, с которое вытаскиваю данные, с другой кодировкой, тут ничего не поделать, такую нужно использовать.
    Писал свой фильтр который бы возращал в utf - 8. пробовал все команды smart_unicode, force_unicode, smart_str и т.д.
    Не уже ли нету решения этой проблемы! :(
  11. igorekk

    01.11.2011

    0 ↑
    0 ↓
    Так у вас не в БД проблема. А в незнании того, что делает return, к примеру.
  12. iznogood

    01.11.2011

    0 ↑
    0 ↓
    igorekk ну как я понимаю return возращает значение из функции, значение может быть любого типа будь это строка, число, объект класса.
    Если не прав исправьте пожалуйста!
  13. iznogood, предлагаю Вам выбрать один из вариантов:

    1. Либо Вы "занимаетесь программированием" недели две. Тогда начните с прочтения скучных теоретических книжек, иначе совсем ничего не получится.
    2. Либо Вы не можете мыслить алгоритмически — тогда книжки можно не читать. Лучше наймите программиста, получится быстрее, качественнее и в результате дешевле.
    3. Либо Вы "справитесь и сами, надо просто подсказать немного". Тогда почитайте про методологию FDD и выберите один из первых двух вариантов.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.