我尝试使用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)
引发此错误是因为程序收到了捷克语中关于连接失败的消息。 有谁知道我做错了什么?
答案 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的错误。