我想知道为什么一切看起来都很好,但在我的mysql数据库中什么都没有插入?我从一个api中得到一些数据,我想在表中插入数据。
使用flask、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)sn')
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')
回溯
假设INSERT
语句在调试print
函数时表现良好,那么您可能需要在INSERT
之后将材料提交到DB。尝试添加
db.commit()
cursor.close()
在CCD_ 4之后。
您需要通过执行来提交表更改
db.commit()
紧跟在每次插入或插入序列之后。读这个。