Thread: [SQLObject] utf-8 encoding troubles
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Petr J. <pet...@tp...> - 2010-02-05 02:48:24
|
I am having troubles with some unicode utf8 characters. They are not displayed properly. I was trying a lot off different settings on the connection part of the SQLObject scrpit (see below), but not success till now. ============== this code DOES NOT bring the UTF -8 code from the database ============== from sqlobject import * mport MySQLdb.converters def _mysql_timestamp_converter(raw): """Convert a MySQL TIMESTAMP to a floating point number representing the seconds since the Un*x Epoch. It uses custom code the input seems to be the new (MySQL 4.1+) timestamp format, otherwise code from the MySQLdb module is used.""" if raw[4] == '-': return time.mktime(time.strptime(raw, '%Y-%m-%d %H:%M:%S')) else: return MySQLdb.converters.mysql_timestamp_converter(raw) conversions = MySQLdb.converters.conversions.copy() conversions[MySQLdb.constants.FIELD_TYPE.TIMESTAMP] = _mysql_timestamp_converter MySQLConnection = mysql.builder() connection = connectionForURI("mysql:// prestashop:prestashop@127.0.0.1:3306/prestashop") ============================================================================= Finaly I did try the direct use of the MySQLdb and it worsk OK! But I can not see why!!! ============== this code brings the UTF-8 code from the database ============== import MySQLdb conn = MySQLdb.connect (host = "localhost", user = "prestashop", passwd = "prestashop", db = "prestashop", use_unicode = True, charset = "utf8") cursor = conn.cursor () cursor.execute ('SELECT * FROM prestashop.ps_address') Thanks for your comments Petr Jakeš |
From: Petr J. <pet...@tp...> - 2010-02-05 09:30:58
|
SOLVED: > MySQLConnection = mysql.builder() > connection = connectionForURI("mysql:// > prestashop:prestashop@127.0.0.1:3306/prestashop") > > ============================================================================= Finally: connection = connectionForURI('mysql:// prestashop:prestashop@127.0.0.1:3306/prestashop?use_unicode=1&charset=utf8') Did the trick. Regards Petr |
From: Oleg B. <ph...@ph...> - 2010-02-05 10:28:58
|
On Fri, Feb 05, 2010 at 03:48:15AM +0100, Petr Jake?? wrote: > MySQLConnection = mysql.builder() You don't need that. > connection = connectionForURI("mysql:// > prestashop:prestashop@127.0.0.1:3306/prestashop") > ============================================================================= > > import MySQLdb > > conn = MySQLdb.connect (host = "localhost", > user = "prestashop", > passwd = "prestashop", > db = "prestashop", > use_unicode = True, > charset = "utf8") You didn't use 'use_unicode' and 'charset' in the SQLObject's DB URI - my be this is the cause? Try connection = connectionForURI("mysql://prestashop:prestashop@127.0.0.1:3306/prestashop?use_unicode=1&charset=utf8") Oleg. -- Oleg Broytman http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |