Python脚本创建PostgreSQL9.6表时提示database.ini无postgresql section
解决PostgreSQL配置文件section找不到的问题
我来帮你排查这个「Section postgresql not found」的错误,核心问题是ConfigParser要么没读到正确的配置文件,要么文件里的格式不对,咱们一步步来解决:
1. 先检查database.ini的格式是否正确
确保你的配置文件里确实存在正确拼写的[postgresql] section,格式要符合ini文件的规范,不能有多余的空格或者拼写错误:
[postgresql] host=localhost database=your_database_name user=your_db_user password=your_db_password port=5432
注意:section名是postgresql,别写成postgres或者加了空格的[ postgresql ],这些都会导致ConfigParser识别不到。
2. 确认配置文件的路径是否正确
你代码里用的filename='$FILEDIR/database.ini',这里的$FILEDIR是环境变量吗?Python不会自动解析shell的环境变量,得手动处理:
- 如果是Linux/macOS,你可以用
os.environ来获取环境变量:
import os from configparser import ConfigParser def config(filename=None, section='postgresql'): if not filename: # 读取环境变量FILEDIR,拼接配置文件路径 file_dir = os.environ.get('FILEDIR') if not file_dir: raise ValueError("环境变量FILEDIR未设置") filename = os.path.join(file_dir, 'database.ini') parser = ConfigParser() # 可以打印路径确认是否正确 print(f"尝试读取配置文件:{filename}") parser.read(filename) db = {} if parser.has_section(section): params = parser.items(section) for param in params: db[param[0]] = param[1] else: raise Exception(f"Section {section} not found in the {filename} file") return db
- 或者你可以直接写绝对路径来测试,比如
filename='/home/your_user/config/database.ini',先确认路径没问题再用环境变量。
3. 检查代码里的笔误
你贴的代码最后一行是params = parser.items(sect...,这里的sect应该是section吧?如果是笔误的话,即使找到了section,代码也会报错,记得修正成parser.items(section)。
4. 确认配置文件的权限
如果脚本运行的用户没有读取database.ini的权限,ConfigParser也会读不到内容。比如Linux下可以用命令检查:
ls -l $FILEDIR/database.ini
如果权限不对,给文件加上读权限:
chmod 644 $FILEDIR/database.ini
按上面的步骤排查,应该能解决这个问题。
内容的提问来源于stack exchange,提问作者Fatmajk
相关产品推荐
相关产品推荐

