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

Flask SQLAlchemy执行数据库查询时create_engine出现KeyError 'False'报错

问题根因

你的报错触发的核心原因是配置值类型不匹配:
从环境变量通过environ.get读取的所有值默认都是字符串类型,但SQLALCHEMY_ECHO、SQLALCHEMY_TRACK_MODIFICATIONS这两个配置项需要传入布尔类型的True/False,你当前传入的是字符串'False',无法匹配SQLAlchemy日志模块内置映射表的键,因此触发KeyError: 'False'。
这和数据库连接串无关,所以你更换连接串的操作无法解决问题,前面出现的greenlet相关KeyError是配置错误触发的连锁异常。

修复方案

修改config.py文件中两个配置项的取值逻辑,把字符串转成布尔类型即可:

from os import environ, path
from dotenv import load_dotenv
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent
load_dotenv(path.join(BASE_DIR, '.env'))


class Config:
    SECRET_KEY = environ.get('SECRET_KEY')
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@127.0.0.1:3306/dbname'
    # 修改配置取值逻辑,自动把字符串转布尔值
    SQLALCHEMY_ECHO = str(environ.get('SQLALCHEMY_ECHO', 'False')).lower() == 'true'
    SQLALCHEMY_TRACK_MODIFICATIONS = str(environ.get('SQLALCHEMY_TRACK_MODIFICATIONS', 'False')).lower() == 'true'

上面的写法默认值设为False,兼容环境变量未配置这两个参数的场景,同时支持环境变量里写True/true/TRUE等多种大小写格式。


内容的提问来源于stack exchange,提问作者Sardar Faisal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:07