我正在使用一个简单的 python 函数连接到 MySQL 数据库。我收到一条错误消息,指出变量在分配之前已被引用,但如果连接已成功建立,则不会出现这种情况。为什么连接失败?
我使用的是 Ubuntu Linux 18.04。我正在运行 xampp 7.3 来托管 mySQL 和 apache 服务器,并使用 phpmyadmin 访问数据库。我正在使用 python 3 运行我的代码。
这是我的代码:
import mysql.connector
from mysql.connector import Error
def connect():
""" Connect to MySQL database """
try:
conn = mysql.connector.connect(host='localhost',
database='myDB',
user='xxx',
password='yyy!')
if conn.is_connected():
print('Connected to MySQL database')
except Error as e:
print(e)
finally:
conn.close()
if __name__ == '__main__':
connect()
这是我收到的错误:
Traceback (most recent call last):
File "01_python-mysql-connect.py", line 23, in <module>
connect()
File "01_python-mysql-connect.py", line 19, in connect
conn.close()
UnboundLocalError: local variable 'conn' referenced before assignment
我期待与数据库的成功连接。我相信我的配置可能有问题,但不知道从哪里开始解决问题。谢谢。
最佳答案
这一行
conn = mysql.connector.connect(host='localhost',
database='myDB',
user='xxx',
password='yyy!')
失败了。所以 conn
永远不会得到分配给它的值。但是您有一个 try...except...finally
block ,并且在 finally
子句中您的代码正在执行 conn.close()
。但是 conn
还没有被赋值,因为应该给它赋值的语句失败了。这就是为什么您会看到消息 local variable 'conn' referenced before assignment。要发现问题所在,请将对 close
的调用移出 finally
子句并将其放在 except
之前。您以后可以随时将其移回。
关于python - 使用 Python 连接 MySQL 数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55640355/