首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我在用Python的configparser读取ini文件时会得到一个KeyError?

为什么我在用Python的configparser读取ini文件时会得到一个KeyError?
EN

Stack Overflow用户
提问于 2021-11-22 13:13:10
回答 1查看 186关注 0票数 0

我想用Python连接到数据库。我的代码:

代码语言:javascript
运行
复制
from configparser import ConfigParser
import pymysql as mysql

class DatabaseG:
    def __init__(self):
        config = ConfigParser()
        config.read("config.ini")
        self.connection = mysql.connect(
                user=config["books"]["user"],
                passwd=config["books"]["password"],
                host=config["books"]["host"],
                db=config["books"]["database"],
        )
        self.cursor = self.connection.cursor()
        query = """
                CREATE TABLE BOOKS (book_url TEXT, book_id)
                """

        self.cursor.execute(query)

db = DatabaseG()

我的config.ini如下所示:

代码语言:javascript
运行
复制
[books]
user=myuser
password=mypass
host=blabla.cz
database=

但是我得到了一个错误的KeyError: 'user'。这是什么意思?用户不存在?

完整的回溯:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "<input>", line 259, in <module>
  File "<input>", line 205, in main
  File "/home/vojtam/Desktop/mydb/db.py", line 25, in __init__
    user=config["books"]["user"],
  File "/usr/lib/python3.8/configparser.py", line 960, in __getitem__
    raise KeyError(key)
KeyError: 'user'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-22 13:16:45

您需要首先从配置中访问books部分:

代码语言:javascript
运行
复制
from configparser import ConfigParser
import pymysql as mysql

class DatabaseG:
    def __init__(self):
        config = ConfigParser()
        config.read("config.ini")
        books_config = config["books"]
        self.connection = mysql.connect(
                user=books_config["user"],
                passwd=books_config["password"],
                host=books_config["host"],
                db=books_config["database"],
        )
        self.cursor = self.connection.cursor()
        query = """
                CREATE TABLE BOOKS (book_url TEXT, book_id)
                """

        self.cursor.execute(query)

db = DatabaseG()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70066327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档