FastAPI连接PostgreSQL报错sslmode值"fastapi"无效
问题解决
1. 解决sslmode报错问题
报错的直接原因是数据库连接URL的格式化参数顺序和占位符数量不匹配。
标准PostgreSQL连接URL格式为:postgresql://[用户名]:[密码]@[主机地址]:[端口]/[数据库名]?sslmode=[ssl模式]
你当前的代码里格式化字符串少了数据库名的占位符,导致参数错位,本应该是数据库名的fastapi被填入了sslmode的位置,触发报错:
# 错误写法:只有5个占位符,但是传了6个参数 DATABASE_URL = 'postgresql://{}:{}@{}:{}?sslmode={}'.format(db_username, db_password, host_server, db_server_port, database_name, ssl_mode)
修正为添加数据库名的占位符即可:
# 正确写法:端口后新增/{dbname}的占位符 DATABASE_URL = 'postgresql://{}:{}@{}:{}/{}?sslmode={}'.format(db_username, db_password, host_server, db_server_port, database_name, ssl_mode)
2. 解决databases库导入报错问题
你只安装了databases核心库,缺少PostgreSQL异步连接依赖,按以下步骤处理即可:
- 先激活当前项目的虚拟环境,执行安装命令:
pip install asyncpg - 如果安装后仍报错,确认你运行代码的环境和安装依赖的虚拟环境一致,避免全局环境和虚拟环境包不匹配的问题
- 可以升级databases到最新稳定版,解决旧版本和Python3.9的兼容性问题
内容的提问来源于stack exchange,提问作者Biswash Koirala
相关产品推荐
相关产品推荐

