【发布时间】:2019-10-26 17:41:27
【问题描述】:
我正在尝试使用 HTTP 发布请求将数据添加到我的 mysql 数据库,但是按照现在的设置方式,如果我们多次发布,则第一个帖子中的数据将更改为 0,因为我声明了所有同一个定义中的变量。我该如何解决这个问题?
我试图在第二个 def 中声明一个全局变量,但它只是循环那个 def 而不是我现在的那个。
#!/usr/bin/env python
import pymysql.cursors
from flask import Flask, request
from Crypto.Cipher import AES
connection = pymysql.connect('localhost','esp', 'password', 'points')
app = Flask(__name__)
@app.route('/post', methods = ["POST"])
def post():
hits1 = 0
hits2 = 0
punch1 = 0
punch2 = 0
kick1 = 0
kick2 = 0
takedown1 = 0
takedown2 = 0
print(request.data)
cipher = AES.new("abcdefghijklmnop")
decryptedData = cipher.decrypt(request.data)
data = decryptedData.decode("utf-8")
print(data)
print(data)
if(data[:1]=="e"):
if(data[1:2] == "1"):
hits1+=1
print(hits1)
if (data[:1]=="1"):
if(data[1:2]=="1"):
punch1+=1
elif(data[1:2]=="2"):
kick1+=1
elif(data[1:2]=="3"):
takedown1+=1
elif(data[:1]=="2"):
if(data[1:2]=="1"):
punch2+=1
elif(data[1:2]=="2"):
kick2+=1
elif(data[1:2]=="3"):
takedown2+=1
points1 = punch1 + kick1 * 2 + takedown1 * 3
points2 = punch2 + kick2 * 2 + takedown2 * 3
print(points1)
print(points2)
try:
with connection.cursor() as cursor:
cursor.execute("INSERT INTO points values({0}, {1}, {2}, {3}, {4}, {5})".format(1, hits1, kick1, punch1, takedown1, points1))
cursor.execute ("INSERT INTO points values({0}, {1}, {2}, {3}, {4}, {5})".format(2, hits2, kick2, punch2, takedown2, points2))
connection.commit()
print ("Data committed")
return 'ok'
except:
connection.close()
app.run(host='0.0.0.0', port= 8090)
上一篇文章的值被更改为 0,但我想保留该值
【问题讨论】:
-
我不清楚你想保留什么价值。
标签: python mysql python-3.x http flask