繁体   English   中英

PYTHON MYSQL第二次不工作

[英]PYTHON MYSQL doesn't work second time

我正在从其他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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM