MySQL hardcoding?

Discussion in 'Python' started by marexposed@googlemail.com, Apr 17, 2008.

  1. Guest

    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.
    , Apr 17, 2008
    #1
    1. Advertising

  2. John Machin Guest

    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
    John Machin, Apr 17, 2008
    #2
    1. Advertising

  3. Guest

    On Thu, 17 Apr 2008 22:00:21 GMT
    John Machin <> wrote:

    > 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.
    , Apr 18, 2008
    #3
  4. John Nagle Guest

    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
    John Nagle, Apr 21, 2008
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Alen Smith

    datagrid hardcoding...

    Alen Smith, Jun 30, 2005, in forum: ASP .Net
    Replies:
    6
    Views:
    1,601
    Alen Smith
    Jun 30, 2005
  2. Gyruss
    Replies:
    6
    Views:
    4,107
    Kenneth P. Turvey
    Jun 20, 2005
  3. cgian31
    Replies:
    11
    Views:
    765
    Oliver Wong
    Oct 21, 2005
  4. cgian31
    Replies:
    1
    Views:
    390
  5. Kyler Laird
    Replies:
    0
    Views:
    316
    Kyler Laird
    Dec 27, 2003
Loading...

Share This Page