Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51

Русский язык в Mysql

14.08.2014, 12:41. Показов 4788. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Подскажите пожалуйста, как можно из Python скрипта в unicode сохранить в БД русскую строку?

ОС Debian

БД создана так:
MySQL
1
CREATE DATABASE cities CHARACTER SET utf8 COLLATE utf8_general_ci;
Модули:
Python
1
2
3
# -*- coding: utf-8 -*-
import MySQLdb
import string
Подключаюсь:
Python
1
2
3
4
5
6
dbCities = MySQLdb.connect(host="localhost", user=dbCitiesUser, passwd=dbCitiesPassword, db=dbCitiesName, charset='utf8')
dbCities.set_character_set('utf8')
citiesCursor=dbCities.cursor()
citiesCursor.execute('SET NAMES utf8')
citiesCursor.execute('SET CHARACTER SET utf8')
citiesCursor.execute('SET character_set_connection=utf8')
Читаю с клавиатуры:
Python
1
2
3
ZIPCODE = raw_input("City ZIP code: ")
LATINNAME = raw_input("Latin City Name: ")
RUSNAME = raw_input("Russian City Name: ")
Готовлю строку для запроса и выполняю запрос:
Python
1
2
3
4
sql="INSERT INTO cities (ZIPCODE,LATINNAME,RUSNAME) VALUES ('"+ZIPCODE+"','"+LATINNAME+"','"+RUSNAME+"');"
citiesCursor.execute(sql)
dbCities.commit()
dbCities.close()
Все проходит, но когда смотрю БД, вижу:
+----------+------------------+----------------+
| ZIPCODE | LATINNAME | RUSNAME |
+----------+------------------+----------------+
| 190000 | Saint Petersburg | ?????-????????? |
+----------+------------------+----------------+

Что может быть не так?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2014, 12:41
Ответы с готовыми решениями:

Русский язык pytesseract
всем привет. написал простенький скрипт import pytesseract import cv2 import matplotlib.pyplot as plt from PIL import Image ...

Русский язык в Python
Добрый день! Пытаясь решать задачку, часть которой заключается в том, чтобы считывать из текстового файла данные на русском языке, но вот...

PySide,PyQt и русский язык
Доброго времени суток. Начал изучать PySide. делаю простейшее приложение: #!/usr/bin/env python # -*- coding: utf-8 -*- ...

13
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
14.08.2014, 13:32
попробуй обернуть ZIPCODE = unicode(raw_input("City ZIP code: "))
0
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
14.08.2014, 13:40  [ТС]
Тогда получается

City ZIP code: 798765
Latin City Name: Gorod Na Neve
Russian City Name: Город на Неве
Traceback (most recent call last):
File "addcity.py", line 51, in <module>
RUSNAME = unicode(raw_input("Russian City Name: "))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
14.08.2014, 13:43
Python 2 или 3 ?
0
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
14.08.2014, 13:44  [ТС]
2,6
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
14.08.2014, 13:59
попробуй
Python
1
RUSNAME = raw_input("Russian City Name: ").decode('cp1251')
Добавлено через 6 минут
либо декодировать из другой (своей) кодировки - koi8-r или какая там на Debian.
0
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
14.08.2014, 15:14  [ТС]
Все равно везде ?????-?????????
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
14.08.2014, 15:16
а без raw_input() -
Python
1
RUSNAME = u"Москва"
- что покажет?
0
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
14.08.2014, 15:33  [ТС]
+---------+------------------+----------------------+
| ZIPCODE | LATINNAME | RUSNAME |
+---------+------------------+----------------------+
| 45654 | Moscow | u?????? |
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
14.08.2014, 15:43
а такие варианты
Python
1
2
3
RUSNAME = u"Москва".encode("cp1251")
RUSNAME = u"Москва".encode("utf8")
RUSNAME = u"Москва".encode("koi8r")
0
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
14.08.2014, 15:54  [ТС]
RUSNAME = u"Москва".encode("cp1251")
такая ошибка:
addcity.py:58: Warning: Incorrect string value: '\xCC\xEE\xF1\xEA\xE2\xE0' for column 'RUSNAME' at row 1
citiesCursor.execute(sql)

RUSNAME = u"Москва".encode("utf8")
Записалось так:

+---------+------------------+----------------------+
| ZIPCODE | LATINNAME | RUSNAME |
+---------+------------------+----------------------+
| 4564 | utf8 | u?????? | 456456 |

Ну и с koi8

Traceback (most recent call last):
File "addcity.py", line 52, in <module>
RUSNAME = u"Москва".encode("koi8r")
LookupError: unknown encoding: koi8r


Мне кажется здесь что-то с запросом или подключением не верно, так как print норм срабатывает в изначальном варианте
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
14.08.2014, 15:57
тогда koi8-r
0
17 / 22 / 6
Регистрация: 16.10.2013
Сообщений: 316
14.08.2014, 22:17
Цитата Сообщение от akalji Посмотреть сообщение
RUSNAME = u"Москва".encode("cp1251")
такая ошибка:
addcity.py:58: Warning: Incorrect string value: '\xCC\xEE\xF1\xEA\xE2\xE0' for column 'RUSNAME' at row 1
citiesCursor.execute(sql)

RUSNAME = u"Москва".encode("utf8")
Записалось так:

+---------+------------------+----------------------+
| ZIPCODE | LATINNAME | RUSNAME |
+---------+------------------+----------------------+
| 4564 | utf8 | u?????? | 456456 |

Ну и с koi8

Traceback (most recent call last):
File "addcity.py", line 52, in <module>
RUSNAME = u"Москва".encode("koi8r")
LookupError: unknown encoding: koi8r


Мне кажется здесь что-то с запросом или подключением не верно, так как print норм срабатывает в изначальном варианте
я мучал долго то же самое, заработало только в таком виде
# -*- coding: utf-8 -*-

cursor = self.connect.cursor()
cursor.execute('SET NAMES utf8;')
cursor.execute("insert into %s %s" % (table_name, diction))
что передаю выше diction= "(%s) values (%s)" % (keys, values)


Keys = status, date_create, title, description, user_creator, currency, amount, user_recipient, status_on_site, who_pay_fee
Values = 'create', '2014-08-14 21:14:34', 'покупка хрени', 'типа описание', '1', 'UAH', '666', '2', '1', '3'
на выходе diction = (status, date_create, title, description, user_creator, currency, amount, user_recipient, status_on_site, who_pay_fee) values ('create', '2014-08-14 21:14:34', 'покупка хрени', 'типа описание', '1', 'UAH', '666', '2', '1', '3')
1
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
16.09.2014, 22:55  [ТС]
UP. Что то не пойму. Вот этот код не выполняется в Debian, хотя в венде норм =(
Так и не могу в MYSQL отправить русскую строку...

Python
1
2
3
4
5
6
# -*- coding: UTF-8 -*-
 
testline = "строка с русскими символами и english letters"
print testline.decode('utf-8')
testline.decode('utf-8').encode('cp1251')
print testline
Добавлено через 5 минут
вот что выдает
Bash
1
2
3
4
5
test.py
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    print testline.decode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordin al not in range(128)
Добавлено через 14 минут
Ребят, глубочайший пардон =)
Короче: решение:
Bash
1
2
3
apt-get install aptitude
aptitude install locales
dpkg-reconfigure locales
Берем все локали потом в файл ~/.bashrc допишем:
Bash
1
2
3
LC_CTYPE=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
export LC_CTYPE LC_COLLATE
В итоге все эксперименты:
+------------+----------------------+------------------------------------+
| ZIPCODE | LATINNAME | RUSNAME |
+------------+----------------------+------------------------------------+
| 1234 | qewr | йцуке |
| 4564 | utf8 | uМосква |
| 45654 | Moscow | uМосква |
| 123456 | qwerty-uiop | йцукен-гшщзхъ |
| 190000 | Saint Petersburg | Санкт-Петербург |
| 190001 | Saint Petersburg | uСанкт-Петербург |
| 456123 | Citi na Eti | uГород спаг |
| 456456 | 1251 | u |
| 789798 | HKJHjkfs | uп╞п╠п╩п╬я┤п╫я▀п╧ я─ |
| 2147483647 | Kamensk-Shakhtinskiy | Каменск-Шахтинский |
+------------+----------------------+------------------------------------+
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2014, 22:55
Помогаю со студенческими работами здесь

Readline не кушает русский язык
Я написал такой код: with open('text.txt') as inf: a = for i in inf] print(a) Но если в файле будет Кириллица, то он...

Русский язык в коде Python 2.7
Когда делаю вывод текста на кириллице, то программа ломается. Как это исправить?

Перевод на русский язык в httml
Добрый вечер. Подскажите пожалуйста. Есть база данных товаров, у каждого есть описание, в базе лежит англоязычный вариант. Есть ли...

Русский язык в откомпилированном .exe файле
Здравствуйте! Мне нужна помощь. Никак не могу исправить проблему( Проблема вот в чём: я создал приложение на PyQt4. Сама компиляция...

Не могу добавить русский язык в кодировку и декодировку
Текст шифруется и дешифруется нормально вот только не получается чтобы он шифровался на русском языке. Может кто-то знает решение? Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru