我正在从其他python脚本接收json数据以放入MYSQL数据库,该代码在第一次运行正常,但是第二次出现此错误:

raise errors.OperationalError("MySQL Connection not available.")
mysql.connector.errors.OperationalError: MySQL Connection not available.


为了进行故障排除,我总是发送相同的数据,但是第二次它仍然写入错误。

我也尝试从在Furums上找到的信息进行尝试:cur = mydb.cursor()在不同的地方,但是我无法第二次获得此代码。

有我的代码:

import mysql.connector
import json

mydb = mysql.connector.connect(
  host="localhost",
  user="***",
  passwd="***",
  database="***"
)



def DATA_REPARTITION(Topic, jsonData):
 if Topic == "test":
  #print ("Start")
  INSERT_DEBIT(jsonData)


def INSERT_DEBIT(jsonData):

  cur = mydb.cursor()

  #Read json from MQTT
  print("Start read data to insert")
  json_Dict = json.loads(jsonData)
  debit = json_Dict['debit']
  print("I send")
  print(debit)
  #Insert into DB Table
  sql = ("INSERT INTO debit (data_debit) VALUES (%s)")
  val=debit,

  cur.execute(sql,val)

  mydb.commit()

  print(cur.rowcount, "record inserted.")

  cur.close()
  mydb.close()


谢谢你的帮助!

最佳答案

您只能在脚本开始时打开一次数据库连接,然后在第一次插入后关闭该连接。因此,第二次和后续插入均失败。您应该创建一个帮助程序函数,该函数返回数据库连接,然后在每次要执行DML时都调用它:

def getConnection():
    mydb = mysql.connector.connect(
        host="localhost",
        user="***",
        passwd="***",
        database="***")

    return mydb

def INSERT_DEBIT(jsonData):
    mydb = getConnection()
    cur = mydb.cursor()

    # Read json from MQTT
    # rest of your code here...

    cur.close()
    mydb.close()

关于python - PYTHON MYSQL第二次不工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52033192/

10-12 04:44