属性错误:模块'mysql'没有属性'connector'

6mzjoqzu  于 2023-06-21  发布在  Mysql
关注(0)|答案(8)|浏览(243)

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

import mysql
    username = 'root'

    cnx = mysql.connector.connect(user=username, database='db')
    cnx.close()

但我得到一个错误:

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

我通过下载here包安装了mysql python模块。我试过sudo apt-get install python-mysql.connector,但没有成功。有什么建议吗?
编辑:在添加import mysql.connector后,我得到了一个不相关的权限错误,现在我已经解决了,所以这就是我需要的!!!

ckx4rj1h

ckx4rj1h1#

解决方案是执行:

import mysql.connector # or from mysql import connector

因为模块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']

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

mysql
|_______ __init__.py # no import at this level
|_______ connector
         |________ __init__.py

如果connector__init__中通过以下方式导入,则可以隐式工作:from . import connector

llew8vvj

llew8vvj2#

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,这解决了我的问题。希望这能为其他人在处理同样的错误时节省一些时间。

yeotifhr

yeotifhr3#

在安装mysql-connector-python之前,我用“pip install”艾德mysql-connector。我卸载了mysql-connector,并得到这个错误。
正如这个stackoverflow问题/答案所提到的,卸载然后重新安装mysql-connector-python使一切正常。
Python | MySQL | AttributeError: module 'mysql.connector' has no attribute 'connect'

a0x5cqrl

a0x5cqrl4#

还有一点在许多教程中,他们没有以相同的方式安装python连接器。在这种情况下,import语句可能是问题的原因。试试下面的import语句。

import mysql.connector as mysql
aoyhnmkz

aoyhnmkz5#

问题是我创建了一个名为“select.py”的脚本,我重命名了它,它又工作了。

qc6wkl3g

qc6wkl3g6#

试试这个

import mysql.connector as mysql

connection = mysql.connect(
   host="localhost", user="root", port='3306', database="database_name")
9o685dep

9o685dep7#

我也遇到了同样的问题,但上述解决方案都不适用于我。不幸的是,我不得不尝试其他东西。我发现我使用的软件包不再工作了。这一定是一个混乱,我升级了我的包,所以我的脚本不再工作了。
我安装了这个包:https://pypi.org/project/mysql-connector-python/和我的脚本现在备份并运行。

bn31dyow

bn31dyow8#

我使用python xenv连接到虚拟环境外的mysql。在尝试修复下面的错误很多次后:

Traceback (most recent call last):
  File "/Users/py/p.py", line 5, in <module>
    db_connection = mysql.connector.connect(
                    ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'mysql.connector' has no attribute 'connect'

通过升级我的Mac OS系统,卸载mysql-connector-python和mysql-connector,并重新安装mysql-connector-python,最终解决了这个问题。

相关问题