与MySql服务器的连接失败 - Python

时间:2015-01-15 12:03:20

标签: python mysql

我尝试使用Python连接到mySql数据库。该数据库位于免费的虚拟主机服务器webzdarma.cz上。

我使用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)

引发此错误是因为程序收到了捷克语中关于连接失败的消息。 有谁知道我做错了什么?

3 个答案:

答案 0 :(得分: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?

答案 1 :(得分:0)

如果是这样,那么你没有做错 - MySQL提供商是。

避免此错误的方法是将默认的Python编码设置为一个 由远程端发回,以便在收到错误消息时“理解”该错误消息 那里。

要做到这一点,尝试做: 导入系统 sys.setdefaultencoding函数( “”)

我不知道它可能是哪种编解码器 - 所以如果你没有简单的方法来了解它, 使用“latin1”作为编解码器 - 它会给你一个mojibake错误信息,但从那以后 所有256字节代码都映射到unicode,你不会得到UnicodeDecodeError。

答案 2 :(得分:0)

我在本地开发机器上遇到了同样的问题,事实证明我的MySQL服务没有启动,我得到了同样的错误信息。启动实例,不再有任何问题!

我将看看我是否可以将此报告为MySQL Connector的错误。