2015-01-15 3 views
0

Я пытаюсь подключиться к базе данных mySql с помощью Python. База данных находится на бесплатном сервере веб-хостинга webzdarma.cz.Ошибка подключения к серверу MySql - Python

Я использую mysql.connector.connect, и все мои аргументы верны, на мой взгляд. Информация о подключении к базе данных являются:

This information is for PHP but I suppose it should work with Python: 
Server: mysql.webzdarma.cz 
Username: flat 
Database: flat 
Password: xxxx 

Это мой код:

# -*- coding: utf-8 -*- 
    import mysql.connector 

    cnx = mysql.connector.connect(user='flat', password='xxxx', 
            host='mysql.webzdarma.cz', 
            database='flat') 

При попытке запустить этот код ошибки больше появляться:

Traceback (most recent call last): 
    File "C:/Users/Python/PycharmProjects/Flat/Flat.py", line 6, in <module> 
    database='flat') 
    File "C:\Python27\lib\site-packages\mysql\connector\__init__.py", line 159, in connect 
    return MySQLConnection(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 129, in __init__ 
    self.connect(**kwargs) 
    File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 454, in connect 
    self._open_connection() 
    File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 417, in _open_connection 
    self._socket.open_connection() 
    File "C:\Python27\lib\site-packages\mysql\connector\network.py", line 470, in open_connection 
    errno=2003, values=(self.get_address(), _strioerror(err))) 
    File "C:\Python27\lib\site-packages\mysql\connector\errors.py", line 181, in __init__ 
    self.msg = self.msg % values 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf8 in position 15: ordinal not in range(128) 

Эта ошибка возникает из-за полученное программой сообщение на чешском языке о неудавшемся соединении. Кто-нибудь знает, что я делаю неправильно?

ответ

0

Если это так, как вы говорите, то вы ничего не делаете неправильно - поставщик MySQL.

Способ избежать этой ошибки будет установить кодировку по умолчанию Python на один отправлен обратно на удаленной стороне, так что он «понимает» сообщение об ошибке, когда он получает там.

Чтобы сделать это, попробуйте сделать следующее: импорт SYS sys.setdefaultencoding («»)

Я не знаю, какой кодек это может быть - так что если вы не имеете легкий способ узнать что, использовать «latin1» в качестве кодека - он даст вам сообщение об ошибке mojibake, но с все 256 байтовых кодов отображаются в unicode, вы не получите UnicodeDecodeError.

1
import MySQLdb 
db = MySQLdb.connect(host="mysql.webzdarma.cz", 
       user="flat", 
       passwd="xxxx", 
       db="flat") 
cur = db.cursor() 
cur.execute("SELECT * FROM YOUR_TABLE_NAME") 
res = cur.fetchall() 

Попробуйте это, это сработает.

для получения более подробной информации следуйте вопрос задают How do I connect to a MySQL Database in Python?

0

Я столкнулся с той же проблемой на моей локальной машине Dev и получается, что моя служба MySQL не была запущена, и я получил то же самое сообщение об ошибке. Начал экземпляр и больше проблем не было!

Я посмотрю, могу ли я сообщить об этом как об ошибке с помощью соединителя MySQL.

Смежные вопросы