You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:35:23