Форум сайта python.su
имеется код, где 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)
Офлайн
Не сомневаюсь, что у меня та же версия базы данных при тех же настройках, что и у вас.
Поэтому советую:
sql = "INSERT INTO base_courier (Autono, FIO, Departmentid ) VALUES( ?, ?, ?)"
cursor.execute(sql, courier_dict['autono'], courier_dict['fio'], courier_dict['departmentid'])
Офлайн
к сожалению пишет, может параметры в каком то другом виде передавать?
sql = "INSERT INTO base_courier (Autono, FIO, Departmentid ) VALUES( ?, ?, ?)"
cursor.execute(sql, courier_dict['autono'], courier_dict['fio'], courier_dict['departmentid'])
Офлайн
Уважаемый Чел_вТапКах.
Может, рискнете сбросить завесу секретности и укажете, какую БД вы используете?
Офлайн
import MySQLdb
Офлайн
Имеем таблицу
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]
Офлайн