Форум сайта python.su
добрый день. помогите новичку плз.
есть mysql живущий на убунте. есть таблица в бд с текстовым полем CHARACTER SET utf8. надо прочитать файлик в кодировке cp1251 и записать каждую строчку в табличку.
читается файлик нормально. а вот записать не получается:
WordFile = open (sys.argv, ‘r’)
for line in WordFile :
s = unicode(line, “cp1251”)
query=“insert into word (ordinary_spelling) values ('”+s+“')”
cursor.execute(query)
потом чтобы проверить запросом счиываю из бд и сохраняю в файл. вместо русских букв появляютя знаки ???
что делать, может кто подскажет?
Офлайн
Что используете для коннекта к БД?
В случае mysqldb - нужно при указании DSN указать use_unicode
Офлайн
коннекчусь как обычно
connection = MySQLdb.connect(host='localhost', user='user1', passwd='123456', db='testdb',use_unicode = 1, charset = ‘utf8’)
Офлайн
А можно код записи в файл?
Офлайн
целиком выглядит так:
WordFile = open (sys.argv, ‘r’)
for line in WordFile :
s = unicode(line, “cp1251”)
query=“insert into word (ordinary_spelling) values ('”+s+“')”
cursor.execute(query)
query=“select ordinary_spelling from word”
cursor.execute(query)
word = cursor.fetchone()
resFile = open (“lyes.test”, ‘w’)
resFile.write(word)
resFile.close()
соответственно файл записываю тоже стандартными методами
Офлайн
нашел что делать надо. мож кому понадобиться - кодировки надо выставить сначала:
cursor.execute('SET NAMES utf8')
cursor.execute('SET CHARACTER SET utf8')
cursor.execute('SET character_set_connection=utf8')
Офлайн
Имхо
строки
cursor.execute('SET CHARACTER SET utf8')
cursor.execute('SET character_set_connection=utf8')
лишние. Будет работать и просто с cursor.execute('SET NAMES utf8').
Офлайн