AttributeError:模块'mysql'没有属性'connector'

pla*_*y69 7 python mysql mysql-python ubuntu-16.04

我正在运行Ubuntu 16.04,试图在python中连接到mysql:

    import mysql
    username = 'root'

    cnx = mysql.connector.connect(user=username, database='db')
    cnx.close()
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

    File "pysql1.py", line 4, in <module>
      cnx = mysql.connector.connect(user=username, database='db')
    AttributeError: module 'mysql' has no attribute 'connector'
Run Code Online (Sandbox Code Playgroud)

我在这里下载了软件包,安装了mysql python模块.我试着sudo apt-get install python-mysql.connector无济于事.有什么指针吗?

编辑:添加后import mysql.connector我得到了一个无关的权限错误,我现在已经解决了,所以这就是我需要的东西!

PRM*_*reu 8

解决方案是执行:

import mysql.connector # or from mysql import connector
Run Code Online (Sandbox Code Playgroud)

因为该模块connector仅在您明确导入时才可用:

import mysql

print(dir(mysql))
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__path__', '__spec__']

import mysql.connector

print(dir(mysql))
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__path__', '__spec__', 'connector']
Run Code Online (Sandbox Code Playgroud)

__init__模块mysql中的文件不会导入模块connector.

mysql
|_______ __init__.py # no import at this level
|_______ connector
         |________ __init__.py
Run Code Online (Sandbox Code Playgroud)

如果用以下内容connector导入,这可以隐式工作__init__:from . import connector.

  • 这让我想知道为什么他们一开始没有以这种方式实现它,但我想您对此没有责任:) (2认同)

小智 6

import mysql.connector检查权限之后,我仍然遇到相同的错误。我在 MacOS 上使用 bash 运行我的脚本。经过几个小时的寻找解决方案,在mysql论坛上看到了这篇文章:https : //forums.mysql.com/read.php? 50,584171,584729#msg- 584729

海报提到你的python脚本不能命名mysql.py我的脚本被命名types.py,所以我将它重命名为setup-types.py,解决了我的问题。希望这可以在处理同样的错误时为其他人节省一些时间。


Ali*_*our 5

如果您已安装 mysql-connectormysql-connector-python

  1. 卸载mysql-connector-python
  2. 卸载mysql 连接器
  3. 重新安装mysql-connector-python

如果您的文件名为mysql.pyselect.py,请重命名它。