POST on MYSQL 数据库在终端完成但我的基地没有

POST on MYSQL database done in terminal but nothing in my base

我想知道为什么一切似乎都没有问题,但我的 mysql 数据库中没有插入任何内容? 我从 api 获取了一些数据,我想在 table.

中插入数据

使用烧瓶,python,pymysql

提前致谢

api = Flask(__name__)


def connect():
    db = pymysql.connect(database='rtap',port=3306, host='127.0.0.1', user='root', password='',ssl_ca="{ca-cert filename}", ssl_disabled=True)
    log.basicConfig(level=log.DEBUG, format='%(asctime)s %(levelname)s:\n%(message)s\n')              
    print("Connexion réussie")
    return db

@api.route('/')
def base():
    return jsonify({"version":"1.0"})

@api.route('/azure', methods=['GET'])
def read():
    db = connect()
    log.info('Reading Datas')
    plane = "SELECT * FROM `plane`;"
    cursor = db.cursor()
    cursor.execute(plane)
    output = cursor.fetchall()
    return jsonify(output)


@api.route('/azure', methods=['POST'])
def write():
    db = connect()
    cursor = db.cursor()
    req = request.json["response"]
    # cursor.executemany("INSERT INTO `plane` (aircraft_icao, reg_number) VALUES (%s, %s);", req)
    # print(req)
    key = []
    for i in req:
        try:
            if (key==[]) :
                plane = "INSERT INTO `plane` (aircraft_icao, reg_number) VALUES ('{}', '{}')".format(i["aircraft_icao"], i["reg_number"])
                key.append(i["reg_number"])
            else:
                if(i["reg_number"] not in key) : #si la key n'a pas encore été utilisée, on peut ecrire la requette, sinon on ne fait rien
                    plane+= ", ('{}', '{}')".format(i["aircraft_icao"], i["reg_number"])
                    key.append(i["reg_number"])
        except Exception as e:
             print("failed")
    # print(plane)
    cursor.execute(plane)
    return jsonify(req)

if __name__=='__main__':
    api.run(debug=True, port=5000, host='0.0.0.0')

traceback

您需要通过

提交您的 table 更改
db.commit()

紧接在每个 INSERT 或 INSERT 序列之后。 Read this.

假设 INSERT 语句在调试 print 函数时看起来不错,那么您可能需要在 INSERT 之后将 material 提交到数据库。尝试添加

    db.commit()
    cursor.close()

cursor.execute() 之后。