【问题标题】:How to Handel exception during Mysql connectionMysql连接异常的处理方法
【发布时间】:2023-01-18 03:42:23
【问题描述】:

我正在尝试连接到 mysql 数据库。如果服务器没有响应,我的应用程序就会崩溃。我正在使用 try, except 但看起来有两个异常正在引发并且“try: except”无法处理它。有人能弄清楚问题出在哪里吗?以下是我的代码:-

def check_server(server_address):

    con = mysql.connector.connect(host='{}'.format(server_address),
                                  database='domicile_reports',
                                  user='xyz',
                                  password='xyz')

    try:

        if con.is_connected():
            print('{} Connected'.format(server_address))
            con.close()
    except Exception as e:
        print("Can not connect to db. {} Occured".format(e)) 
 check_server('25.13.253.67')

终端上显示的错误:- 回溯(最后一次通话): 文件“C:\Users\Hamid Shah\AppData\Roaming\Python\Python310\site-packages\mysql\connector
network.py”,第 574 行,在 open_connection 中 self.sock.connect(sockaddr) TimeoutError: [WinError 10060] A connection attempt failed because the connected party didn't properly respond after a period time, or established connection failed because connected host has failed respond 连接失败

在处理上述异常的过程中,又出现了一个异常:

追溯(最近一次通话): 文件“f:\Docs\OneDrive\Python Projects\CFC App\splash_screen_gui.py”,第 151 行,位于 obj = 闪屏() 文件“f:\Docs\OneDrive\Python Projects\CFC App\splash_screen_gui.py”,第 51 行,位于在里面self.check_server(self.server_2) check_server 中的文件“f:\Docs\OneDrive\Python Projects\CFC App\splash_screen_gui.py”,第 80 行 con = mysql.connector.connect(host='{}'.format(server_address), 文件“C:\Users\Hamid Shah\AppData\Roaming\Python\Python310\site-packages\mysql\connector_在里面_.py”,第 273 行,在连接中 返回 MySQLConnection(*args, **kwargs) 文件“C:\Users\Hamid Shah\AppData\Roaming\Python\Python310\site-packages\mysql\connector\connection.py”,第 116 行,位于在里面self.connect(**kwargs) 文件“C:\Users\Hamid Shah\AppData\Roaming\Python\Python310\site-packages\mysql\connector\abstracts.py”,第 1052 行,在连接中 self._open_connection() 文件“C:\Users\Hamid Shah\AppData\Roaming\Python\Python310\site-packages\mysql\connector\connection.py”,第 494 行,在 _open_connection
self._socket.open_connection() 文件“C:\Users\Hamid Shah\AppData\Roaming\Python\Python310\site-packages\mysql\connector\network.py”,第 576 行,在 open_connection
引发错误.InterfaceError( mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '25.13.253.67:3306' (10060 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机失败 回应)

【问题讨论】:

标签: python mysql mysql-connector-python


【解决方案1】:

您需要将 connect() 调用放在 try: except 块中。您还可以使用上下文管理器来正确关闭连接,例如:

import mysql.connector

from mysql.connector.errors import Error


def check_server(server_address):
    try:
        with mysql.connector.connect(
            host=server_address,
            database="domicile_reports",
            user="xyz",
            password="xyz",
        ) as cnx:
            print(f"{server_address} Connected")
    except Error as err:
        print(f"Can not connect to db. {err} Occured")


check_server("25.13.253.67")

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多