python - 使用 Python 连接 MySQL 数据库时出错

标签 python mysql linux database ubuntu

我正在使用一个简单的 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/

相关文章:

python - Pandas 数据透视表 - 改变非索引列的顺序

mysql - 如何根据两个sql表中的值找出哪些列相似?

MySQL:找出丢失的订单 ID

c - 哪些部分构成可执行文件的大小?

python pip 安装失败

Python,Numpy - 尝试根据条件拆分数组

MySQL 将列值设置为另一列的大写值

linux - Shell 文件解析以自动上传 youtube

linux - Linux环境下使用Selenium验证对话框

python - 如何计算多个csv文件中的行数