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

SQLAlchemy对象无connection属性报错 如何正确连接MySQL数据库

报错原因

你使用的是Flask-SQLAlchemy封装后的SQLAlchemy实例对象,该对象没有直接暴露connection属性,你直接套用了原生PyMySQL的游标操作逻辑,因此触发属性不存在的报错。

解决方案

方案1:保留原生SQL执行逻辑的修改方法

如果需要继续用原生SQL做查询,可通过db.engine或者db.session获取连接执行,修改后代码如下:

if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
    # Create variables for easy access
    username = request.form['username']
    password = request.form['password']
    # Check if account exists using MySQL
    
    # 方式1:通过engine获取连接执行,返回字典格式结果
    with db.engine.connect() as conn:
        result = conn.execute(
            'SELECT * FROM accounts WHERE username = %s AND password = %s', 
            (username, password)
        )
        # mappings()方法可将返回结果转为字典格式,等价于原代码的DictCursor效果
        account = result.mappings().fetchone()

    # 方式2:更简洁的session执行写法,参数用命名占位符更安全
    # account = db.session.execute(
    #     'SELECT * FROM accounts WHERE username = :username AND password = :password',
    #     {"username": username, "password": password}
    # ).mappings().fetchone()

注意:当前代码明文存储、比对用户密码属于高危安全漏洞,生产环境必须使用bcrypt等加密方案对密码做哈希存储后再做比对

方案2:推荐的ORM查询写法(符合SQLAlchemy使用规范)

首先提前定义Account映射模型:

class Account(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    # 其余业务字段按需补充

查询代码可简化为:

account = Account.query.filter_by(username=username, password=password).first()
Flask场景下SQLAlchemy连接MySQL的正确前置配置
  • 安装依赖:pip install flask-sqlalchemy pymysql
  • 初始化配置代码示例:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 连接URI格式:mysql+pymysql://数据库用户名:密码@主机地址:端口/库名?charset=utf8mb4
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:your_db_password@127.0.0.1:3306/your_db_name'
# 关闭不必要的对象修改追踪,减少性能开销
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

内容的提问来源于stack exchange,提问作者Samiksha Mobarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:02