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