By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,636 Members | 1,945 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,636 IT Pros & Developers. It's quick & easy.

MySQL hardcoding?

P: n/a
I've got this error (see the path in last line)

db=MySQLdb.connect(host='localhost',use_unicode = True, charset = "Windows-1251",user='root',passwd='12',db='articulos')
File "C:\Python24\Lib\site-packages\MySQLdb\__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "C:\Python24\lib\site-packages\MySQLdb\connections.py", line 198, in __init__
self.set_character_set(charset)
File "C:\Python24\lib\site-packages\MySQLdb\connections.py", line 277, in set_character_set
super(Connection, self).set_character_set(charset)
OperationalError: (2019, "Can't initialize character set Windows-1251 (path: C:\\mysql\\\\share\\charsets\\)")

The truth of the matter is, MySQL is not installed in that path, but into Program Files.
I don't know where the hardcoding is, but it is certainly somewhere. Except MySQL is reporting a wrong installation path.
I haven't found any other topic in the list about this problem.

I'm using Python 2.4 and latest MySQLdb. Have anyone heard of this issue and how to fix it?

Thanks a lot.
Jun 27 '08 #1
Share this Question
Share on Google+
3 Replies


P: n/a
ma********@googlemail.com wrote:
I've got this error (see the path in last line)

db=MySQLdb.connect(host='localhost',use_unicode = True, charset = "Windows-1251",user='root',passwd='12',db='articulos')
Can't help with the answer to your question, but this may stave off yet
another question:

The empirical evidence from other recent postings is that you are
mucking about with Spanish-language newspaper "articulos" on the web ...
so why charset = "Windows-1251", which is Cyrillic (i.e. Russian etc)??
Perhaps you mean 1252 which is Microsoft's latin1 with extras.

HTH,
John
Jun 27 '08 #2

P: n/a
On Thu, 17 Apr 2008 22:00:21 GMT
John Machin <sj******@lexicon.netwrote:
The empirical evidence from other recent postings is that you are
mucking about with Spanish-language newspaper "articulos" on the web ...
so why charset = "Windows-1251", which is Cyrillic (i.e. Russian etc)??
Perhaps you mean 1252 which is Microsoft's latin1 with extras.

HTH,
John
--
http://mail.python.org/mailman/listinfo/python-list
Yes John, thanks. The only problem is MySQL doesn't include a cp1252 or Windows-1252 or ansi. I'm trying to find my way with different approaches.
But there is certainly a problem if an application goes to the wrong folder to get data as MySQL seems to be doing.

Thanks.
Jun 27 '08 #3

P: n/a
ma********@googlemail.com wrote:
I've got this error (see the path in last line)

db=MySQLdb.connect(host='localhost',use_unicode = True, charset = "Windows-1251",user='root',passwd='12',db='articulos')
File "C:\Python24\Lib\site-packages\MySQLdb\__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "C:\Python24\lib\site-packages\MySQLdb\connections.py", line 198, in __init__
self.set_character_set(charset)
File "C:\Python24\lib\site-packages\MySQLdb\connections.py", line 277, in set_character_set
super(Connection, self).set_character_set(charset)
OperationalError: (2019, "Can't initialize character set Windows-1251 (path: C:\\mysql\\\\share\\charsets\\)")

The truth of the matter is, MySQL is not installed in that path, but into Program Files.
I don't know where the hardcoding is, but it is certainly somewhere. Except MySQL is reporting a wrong installation path.
I haven't found any other topic in the list about this problem.

I'm using Python 2.4 and latest MySQLdb. Have anyone heard of this issue and how to fix it?

Thanks a lot.
Well, for one thing, MySQL doesn't have a character set called
"Windows-1251", which is an obsolete Cyrillic variant of Windows.
See the list of MySQL character sets at:

"http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html"

MySQL does have "cp1251", which is apparently the same thing.

Be aware that in Python, there are really only two character
sets - ASCII and Unicode. The "upper code page" thing is deprecated,
and you can't do some string operations on characters with values 128.
It's best to convert input to Unicode, run everything in Python in
Unicode, send to the database in "utf8", and store your data in "utf8".

You have "use_unicode" set to True. If you're going to run
the MySQL connection in Unicode, you should use "utf8" talking to the
database, and Unicode strings in Python. Otherwise, you have to
understand very clearly exactly how both Python and MySQL handle
character sets, and how this changes in Python 2.4, 2.5, and 3.x.

John Nagle
Jun 27 '08 #4

This discussion thread is closed

Replies have been disabled for this discussion.