Lyes
Сен. 3, 2009 10:46:29
добрый день. помогите новичку плз.
есть 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)
потом чтобы проверить запросом счиываю из бд и сохраняю в файл. вместо русских букв появляютя знаки ???
что делать, может кто подскажет?
regall
Сен. 3, 2009 13:13:58
Что используете для коннекта к БД?
В случае mysqldb - нужно при указании DSN указать use_unicode
Lyes
Сен. 3, 2009 13:18:18
коннекчусь как обычно
connection = MySQLdb.connect(host='localhost', user='user1', passwd='123456', db='testdb',use_unicode = 1, charset = ‘utf8’)
regall
Сен. 3, 2009 14:41:18
А можно код записи в файл?
Lyes
Сен. 3, 2009 14:46:58
целиком выглядит так:
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()
соответственно файл записываю тоже стандартными методами
Lyes
Сен. 7, 2009 12:57:19
нашел что делать надо. мож кому понадобиться - кодировки надо выставить сначала:
cursor.execute('SET NAMES utf8')
cursor.execute('SET CHARACTER SET utf8')
cursor.execute('SET character_set_connection=utf8')
NSkrypnik
Сен. 8, 2009 17:38:52
Имхо
строки
cursor.execute('SET CHARACTER SET utf8')
cursor.execute('SET character_set_connection=utf8')
лишние. Будет работать и просто с cursor.execute('SET NAMES utf8').