Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2010 16:54:34

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

русские буквы в sql запросе

имеется код, где courier_dict является строкой на русском

            sql = u"INSERT INTO base_courier (Autono, FIO, Departmentid ) \
VALUES( '%s','%s','%s')" \
%( courier_dict['autono'], courier_dict['fio'], courier_dict['departmentid'])

cursor.execute(sql)
выводится ошибка
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 99-106: ordinal not in range
(256)
пробовал декодировать и енкодировать в утф и ср1251, кодировка файла стоит # -*- coding: utf-8 -*- , ну с ср1251 тоже не работала
подскажите что делать?



Офлайн

#2 Ноя. 28, 2010 18:06:03

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

русские буквы в sql запросе

Не сомневаюсь, что у меня та же версия базы данных при тех же настройках, что и у вас.
Поэтому советую:

sql = "INSERT INTO base_courier (Autono, FIO, Departmentid ) VALUES( ?, ?, ?)" 
cursor.execute(sql, courier_dict['autono'], courier_dict['fio'], courier_dict['departmentid'])



Офлайн

#3 Ноя. 28, 2010 18:19:55

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

русские буквы в sql запросе

к сожалению пишет, может параметры в каком то другом виде передавать?

sql = "INSERT INTO base_courier (Autono, FIO, Departmentid ) VALUES( ?, ?, ?)" 
cursor.execute(sql, courier_dict['autono'], courier_dict['fio'], courier_dict['departmentid'])



Офлайн

#4 Ноя. 28, 2010 18:24:06

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

русские буквы в sql запросе

Уважаемый Чел_вТапКах.
Может, рискнете сбросить завесу секретности и укажете, какую БД вы используете?



Офлайн

#5 Ноя. 28, 2010 18:30:12

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

русские буквы в sql запросе

import MySQLdb



Офлайн

#6 Ноя. 29, 2010 23:47:00

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

русские буквы в sql запросе

Имеем таблицу

CREATE TABLE `test`.`test` (
`id` integer NOT NULL AUTO_INCREMENT,
`name` varchar(256) ,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci
COMMENT = 'Test table';
Имеем код
# -*- coding: utf-8 -*-

import MySQLdb as db

conn = db.connect(user='test', passwd='test', db='test',
use_unicode=True, charset='utf8')

c = conn.cursor()

c.execute('insert into test (name) values(%s)', (u'Вася Пупкин',))

c.execute('select * from test')
r = c.fetchone()

print r[0], r[1]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version