问题描述
我正在使用Flask在Python 3上开发API并尝试将数据插入MysqL,但是响应中仅包含值,并且无法在app的Json答案中正确显示。 Python代码
app = Flask(__name__)
app.config['MysqL_HOST'] = 'localhost'
app.config['MysqL_USER'] = 'root'
app.config['MysqL_PASSWORD'] = ''
app.config['MysqL_DB'] = 'didaxis'
MysqL = MysqL(app)
@app.route('/insertAlumno',methods = ['POST'])
def insertAlumno():
nombre = request.json['nombre']
apellidoPaterno = request.json['apellidoPaterno']
apellidoMaterno = request.json['apellidoMaterno']
fechaNacimiento = request.json['fechaNacimiento']
direccion = request.json['direccion']
telefono = request.json['telefono']
correo = request.json['correo']
matricula = request.json['matricula']
curso = request.json['curso']
dataUser = (nombre,apellidoPaterno,apellidoMaterno,fechaNacimiento,direccion,telefono,correo,matricula,curso)
conect = MysqL.connection.cursor()
conect.callproc('insertaralumno',dataUser)
data = conect.fetchall()
data=jsonify(data)
return data
存储过程
DELIMITER //
CREATE PROCEDURE insertaralumno(_nombre VARCHAR(50),_apellidoPaterno VARCHAR(30),_apellidoMaterno VARCHAR(30),_fechaNacimiento DATE,_direccion VARCHAR(100),_telefono VARCHAR(20),_correo VARCHAR(50),_matricula VARCHAR(50),_curso VARCHAR(10))
BEGIN
DECLARE idPersonaTemp,idUserTemp INT DEFAULT 0;
INSERT INTO persona (nombre,correo)
VALUES (_nombre,_apellidoPaterno,_apellidoMaterno,_fechaNacimiento,_direccion,_telefono,_correo);
SET idPersonaTemp = last_insert_id();
INSERT INTO usuario (usuario,pass,estatus)
VALUES (_matricula,_matricula,1);
SET idUserTemp = last_insert_id();
INSERT INTO alumno VALUES (_matricula,idPersonaTemp,idUserTemp,_curso,1);
SELECT * FROM vista_alumnos WHERE id = _matricula;
END //
我从邮递员那里得到的答复
[
[
"Simon","Lopez","Fri,23 Oct 1998 00:00:00 GMT","Miguel Hidalgo 515","4761138167","simon.valt23@gmail.com","178724",9,"1APre",1
]
]
我希望有人可以向我解释这个问题,以及如何获取带有列名的响应json以标识值。
解决方法
我得到了答案,在Python代码上添加了几行
conect = mysql.connection.cursor()
conect.callproc('insertarAlumno',dataUser)
*columns=[x[0] for x in conect.description]
data = conect.fetchall()
*json_data=[]
*for result in data:
*json_data.append(dict(zip(columns,result)))
*return jsonify(json_data)
以*开头的行相对于帖子进行了修改,或者只是添加了。