Форум сайта python.su
Lexander
Добавил use_unicode=True и charset='utf8' на это после выполнения получаю:
dbsql.py:14: Warning: Incorrect string value: ‘\xCF\xF0\xE8\xE2\xE5\xD2…’ for column ‘name’ at row 1
c.execute(sql)
dbsql.py:14: Warning: Incorrect string value: ‘\xD0\xF3\xF1\xF1’ for column ‘name’ at row 1
c.execute(sql)
При этом строки латиницей снова удалились, а русские так и сидят.
Ну я так понимаю с БД всё нормально, но проблема тока в этой строке: tags= именно эти элементы списка не могут в utf8 трансформироваться.
Так может эту строку например содержать в файле и от туда считывать от запятой и до запятой, или просто каждое словосочетание с новой строки, главный вопрос поможет ли это? Станет ли легче программно со строками БД сравнивать? Может ещё какой вариант?
Всё равно это не итоговый вид программы, это только один элемент, но из-за этого я не могу двигаться далее.
Офлайн
tags=
Офлайн
KarDer_GroomLexander
Так я пробовал: u'слово русское' - не помогло
Офлайн
KarDer_Groomtags - глобальная переменная.
for num in range(len(tags)):
sql=“DELETE FROM tabl WHERE name='%s'” % tag()
c.execute(sql)
db.commit()
for i, n in c.fetchall():
KarDer_Groomэто строки в уникоде…и ваша база на них ругается…странно-строки, они и в африке - строки.
\xD0\xF3\xF1\xF1'
KarDer_Groomа пишите вы в базу как? …если удаляете неоднократно, то как пишите? какой код?
При этом строки латиницей снова удалились
Офлайн
pionerЯ конечно новичёк в этом языке, но у меня получается через (pop) удалять, в Инэти нашел (http://ru.diveintopython.org/odbchelper_list.html) и во втором сообщении o7412369815963 подсказал проще способ, без функции.
tags - глобальная переменная.
у вас цикл идет по длинне, которая уменьшается (pop). уверены что в питоне так работает? я не уверен. и так не делаю, но любопытно.
… c.fetchall() зачем? “delete” не возвращает ничего.
pionerНе совсем понял. В tags записываю русские слова, но указываю ведь в начале что пишу в UTF-8, в коде. База данных вся в utf8 следовательно просто сравниваю и при совпадении удаляю. С английскими словами прокатывает, но русские пропускает (получается просто не находит соответствия в БД, командой pop удаляет словосочетание и идёт дальше). Логика вроде верная, но видимо где-то всё таки кодировка портится.
это строки в уникоде…и ваша база на них ругается…странно-строки, они и в африке - строки.
pionerИзвините, тоже не совсем вопрос понял, отвечаю как понял: после выполнения у меня удаляются все строки с символами и англ. словами, русские остаются, так как смотрю БД MySQL Querty Browser, для следующего опыта я просто выполняю скрипт (в той же проге):
а пишите вы в базу как? …если удаляете неоднократно, то как пишите? какой код?
Офлайн
KarDer_GroomЗапишите так же русские, потом попробуйте удалить…думаю все прояснится. Вы уже видите причину, надо ее расковырять до конца.
и таблица готова к новым тестам. Русские не закидываю, так как они не удалились.
Офлайн
pioner
Расковырял )))))) до конца, пошёл от обратного, рас у меня в переменной такое: “\xD0\xF3\xF1\xF1” то это нада в русские буквы перевести, перевёл так:
sql="DELETE FROM tabl WHERE name='%s'" % tag().decode('cp1251')
Отредактировано (Ноя. 18, 2009 14:00:49)
Офлайн
KarDer_Groomданной командой происходит преобразование строки cp1251 в уникод, если так работает, то скорее всего в tag кодировка ср1251 и наверно весь исходник в этой же кодировке, в блокноте пишите код?
pionersql="DELETE FROM tabl WHERE name='%s'" % tag().decode('cp1251')
Офлайн
o7412369815963Ну создал .py файл, и там пишу код через Notepad++, собственно да.
весь исходник в этой же кодировке, в блокноте пишите код?
Офлайн
KarDer_GroomВ Notepad++, как собственно и в любом другом текстовом редакторе есть возможность задать кодировку файла, или сохранить файл в конкретной кодировке, полазьте по менюшкам, посмотрите.
Ну создал .py файл, и там пишу код через Notepad++, собственно да.
Офлайн