mysql報錯pymysql.err.InterfacError插入問題解決

一、pymysql.err.InterfaceError: (0, '')錯誤導致原因

     目前我這邊導致InterfaceError: (0, '')的原因是 沒有連接上數據庫就在進行數據插入操作;在此之前會報ERROR (2013, 'Lost connection to MySQL server during query')錯誤,即mysql連接丟失。

二、解決方法

2.1、python連接語句

conn= pymysql.connect(host='10.24.21.192', port=9009, user='root', passwd='123456', db='test')

 2.2、pymysql自帶 ping函數,可以檢測連接是否還正,ping函數源碼(來自python包):

    def ping(self, reconnect=True):
        """
        Check if the server is alive.

        :param reconnect: If the connection is closed, reconnect.
        :raise Error: If the connection is closed and reconnect=False.
        """
        if self._sock is None:
            if reconnect:
                self.connect()
                reconnect = False
            else:
                raise err.Error("Already closed")
        try:
            self._execute_command(COMMAND.COM_PING, "")
            self._read_ok_packet()
        except Exception:
            if reconnect:
                self.connect()
                self.ping(False)
            else:
                raise

2.3、問題解決

方法1:

import pymysql

conn= pymysql.connect(host='10.24.21.192', port=9009, user='root', passwd='123456', db='test')

def test_conn():
    sql_i = "INSERT INTO test_1(request_date, id, msg, label) VALUES (%s,%s,%s,%s)"
    vals = ('20200427', '566453015','您好,這有啥', 'label_ask')
    #conn.close()
    while True:
        try:
            with conn.cursor() as cursor:  # 獲取遊標
                cursor.execute(sql_i, vals)
            conn.commit()
            break
        except pymysql.err.InterfaceError as e:
            print(e, type(e))
            conn.ping(True)

方法2:

import pymysql

conn= pymysql.connect(host='10.24.21.192', port=9009, user='root', passwd='123456', db='test')

def test_conn():
    '''測試 '''
    sql_i = "INSERT INTO test_1(request_date, id, msg, label) VALUES (%s,%s,%s,%s)"
    vals = ('20200427', '566453015','您好,這有啥', 'label_ask')
    conn.ping(True)
    with conn.cursor() as cursor:  # 獲取遊標
        cursor.execute(sql_i, vals)
    conn.commit()

 

參考網址:

https://www.cnblogs.com/wintest/p/12772670.html

https://www.cnblogs.com/aaronthon/p/10331415.html

https://blog.csdn.net/u013948858/article/details/88343426

http://www.itgo.me/a/7316792386468297992/python-pymysql-err-operationalerror-2013-lost-connection-to-mysql-server-dur

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章