Flask连接XAMPP MySQL报错:TypeError: 'str'无法作为整数解析
解决Flask连接XAMPP MySQL插入记录时的TypeError问题
核心错误原因
你的代码触发TypeError: 'str' object cannot be interpreted as an integer的直接原因是数据库端口配置类型错误:app.config['MYSQL_PORT'] = '3307'使用了字符串类型,而flask_mysqldb要求端口必须是整数。
另外你尝试的命名参数写法也存在错误:命名参数需要传入字典而非元组,否则无法匹配SQL中的占位符。
修正后的完整代码
from flask import Flask, render_template, request from flask_mysqldb import MySQL app = Flask(__name__) app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_PORT'] = 3307 # 改为整数类型,解决TypeError app.config['MYSQL_USER'] = 'root' app.config['MYSQL_PASSWORD'] = 'password' app.config['MYSQL_DB'] = 'pruebas' mysql = MySQL(app) @app.route('/') def Index(): return render_template('index.html') @app.route('/add-contact', methods=['POST']) # 替换路由中的空格为连字符,避免请求解析问题 def add_contact(): if request.method == 'POST': nombre = request.form['Nombre'] estado = request.form['Estado'] situacion = request.form['Situacion'] cur = mysql.connection.cursor() # 写法一:位置参数(修正端口后即可正常运行) cur.execute('INSERT INTO prueba1 (Nombre, Estado, Situacion) VALUES (%s, %s, %s)', (nombre, estado, situacion)) # 写法二:命名参数(需传入字典) # cur.execute('INSERT INTO prueba1 (Nombre, Estado, Situacion) VALUES (%(Nombre)s, %(Estado)s, %(Situacion)s)', # {'Nombre': nombre, 'Estado': estado, 'Situacion': situacion}) mysql.connection.commit() cur.close() # 关闭游标释放资源 return 'Recibido' if __name__ == '__main__': app.run(port=3000, debug=True)
额外优化建议
- 路由地址避免使用空格,改用
/add-contact这类格式,防止请求时的路径识别问题 - 操作数据库后关闭游标,避免资源占用
- 变量名遵循Python下划线命名规范(如
nombre而非Nombre),提升代码可读性
内容的提问来源于stack exchange,提问作者Patricio Garcia
相关产品推荐
相关产品推荐

