【问题标题】:error when using mysql.connector for python to connect database使用 mysql.connector for python 连接数据库时出错
【发布时间】:2015-08-16 01:58:14
【问题描述】:

我是python的新手,从实现小程序开始,现在尝试连接数据库。我安装了python 3.4和mysql.connector 2.0.4。 下面给出的代码是我用来连接数据库的代码

#!"C:\python34\python.exe"
import sys
import mysql.connector
print("Content-Type: text/html;charset=utf-8")
print()
conn = mysql.connector.connect(host='localhost:8051',
                                       database='test',
                                       user='root',
                                       password='tiger')

if conn.is_connected():
    print('Connected to MySQL database')

但我收到如下错误。不明白为什么会发生此错误,因为设置环境错误或其他原因 请推荐

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 448, in open_connection
    socket.SOL_TCP)
  File "C:\Python34\lib\socket.py", line 533, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11004] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#8>", line 2, in <module>
    password='tiger',database='test')
  File "C:\Python34\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "C:\Python34\lib\site-packages\mysql\connector\abstracts.py", line 719, in connect
    self._open_connection()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 209, in _open_connection
    self._socket.open_connection()
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 464, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:8051:3306' (11004 getaddrinfo failed)

【问题讨论】:

    标签: python mysql apache


    【解决方案1】:

    错误信息很清楚:

     Can't connect to MySQL server on 'localhost:8051:3306'
    

    看到双端口定义了吗?

    host='localhost:8051'
    

    应该是

    host='localhost', port='8051'
    

    【讨论】:

      【解决方案2】:

      您使用的连接参数错误。我认为你需要这样做:

      conn = mysql.connector.connect(host='localhost',
                                     port=8051,
                                     database='test',
                                     user='root',
                                     password='tiger')
      

      查看此doc 了解更多详情。

      【讨论】:

        【解决方案3】:

        MySQL 的默认端口是 3306 ,当您不将“端口”参数传递给 mysql.connector.connect 时,它假定您使用的默认端口是 3306 ,如果您使用另一个端口,您应该传递:

        port=xxxx
        

        到构造函数。

        【讨论】:

        • 我认为上面的端口应该是一个整数(即不要使用引号)
        • @KolaB 是的,你是对的,我现在检查了文档:mysql-python.sourceforge.net/MySQLdb.html。我猜在以前的版本中它使用的是字符串,因为它正在创建一个字符串“连接字符串”。
        【解决方案4】:

        对于我来说,我在我的 IDE 上添加了所有连接器。

        mysql 连接器 mysql-connector-async-dd
        mysql-connector-python
        mysql-connector-python-dd
        mysql-connector-repackaged

        然后你可以在这里看到你所有的数据库名称:

        import mysql.connector
        mydb = mysql.connector.connect(host='localhost',user='root', passwd = 'Root@1234')
        mycursor = mydb.cursor()
        mycursor.execute("show databases")
        for i in mycursor:
            print(i)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-05-01
          • 2012-05-15
          • 2014-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多