Jupyter Notebook连接数据库时出现KeyError: 'db_host'如何解决?
解决KeyError: 'db_host'及数据库连接问题
核心问题拆解
- 环境变量未配置:
os.environ["db_host"]报错的直接原因是你的Jupyter Notebook环境中,没有设置db_host、db_port这类数据库连接相关的环境变量,Python无法找到对应的值。 - 驱动库匹配错误:你明确说要连接MySQL,但代码里用的是
psycopg2——这是PostgreSQL数据库的专用连接库,MySQL需要使用pymysql或mysql-connector-python这类适配的驱动。
具体解决方案
方案一:直接硬编码参数(适合学习/测试场景)
如果是学校项目的测试环节,不想折腾环境变量,可以直接把数据库的真实信息写入代码:
# 先安装MySQL驱动,比如pymysql !pip install pymysql import pymysql import pandas as pd # 替换成你的MySQL实际配置 conn = pymysql.connect( host="localhost", # 本地数据库填localhost,远程填对应IP port=3306, # MySQL默认端口是3306 user="root", # 你的数据库用户名 password="你的数据库密码", database="要连接的数据库名" )
方案二:正确配置环境变量(规范场景推荐)
如果坚持使用环境变量,可在Jupyter会话内手动设置:
import os import pymysql # 会话内临时设置环境变量 os.environ["db_host"] = "localhost" os.environ["db_port"] = "3306" os.environ["db_user"] = "root" os.environ["db_password"] = "你的数据库密码" os.environ["db_name"] = "要连接的数据库名" # 建立连接(注意端口要转成整数) conn = pymysql.connect( host=os.environ["db_host"], port=int(os.environ["db_port"]), user=os.environ["db_user"], password=os.environ["db_password"], database=os.environ["db_name"] )
注意:从环境变量取出的端口是字符串类型,必须转成整数才能被MySQL驱动识别。
额外提示
- 若你实际要连接的是PostgreSQL,可保留
psycopg2,但同样要确保环境变量已配置,或直接硬编码连接参数。 - 首次创建数据库时,需先在MySQL客户端执行
CREATE DATABASE 数据库名;语句建好库,再通过代码连接。
内容的提问来源于stack exchange,提问作者Mykala Wright
相关产品推荐
相关产品推荐

