python3.6:Mysql/Class/Inhertance连接问题

2024-05-13 10:47:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行下面的代码以使用Python3.6连接到数据库,我不确定我是否正确使用了python,我读入了配置文件并创建了Dao类的实例,并将配置详细信息传递回Dao的父类Db。你知道吗

当我尝试打开和关闭Dao对象上的连接时,它说dbhost没有设置。你知道吗

非常感谢您的帮助。你知道吗

错误

Traceback (most recent call last):
  File "parse.py", line 12, in <module>
    sources = daoObj.getSourceUrls()
  File "E:\classes\Dao.py", line 14, in getSourceUrls
    conn = super().open()
  File "E:\classes\Db.py", line 22, in open
    conn = pymysql.connect(dbhost, dbuser, dbpass, dbname);
NameError: name 'dbhost' is not defined

你知道吗解析.py你知道吗

import configparser
from classes.Dao import Dao

# Load configuration settings
config = configparser.ConfigParser()
config.read("./config.ini")

# Create instance of database class
daoObj = Dao(config)

# Test database connection
daoObj.test()

你知道吗道比你知道吗

from classes.Db import Db

class Dao(Db):
    """Contains all SQL queries used for database interaction"""
    node = None

    def __init__(self, config):
        """Default constructor"""
        super().__init__(config)

    def getSourceUrls(self):
        conn = super().open()
        super().close(conn)

你知道吗双倍你知道吗

import pymysql

class Db:
    """Database connection class, handles all opening and closing of MySQL database connections."""
    dbuser = None
    dbpass = None
    dbhost = None
    dbname = None

    def __init__(self, config):
        """Default constructor"""
        # Assign the database login credentials
        dbuser = config["DB"]["USER"]
        dbpass = config["DB"]["PASS"]
        dbhost = config["DB"]["HOST"]
        dbname = config["DB"]["DATABASE"]

    def open(self):
        """Open database connection."""
        conn = None
        try:
            conn = pymysql.connect(dbhost, dbuser, dbpass, dbname);
        except pymysql.err.InternalError as e:
            print("Error connecting to database.")
        return conn

    def close(self, conn):
        """Close passed in database connection"""
        conn.close()

你知道吗配置.ini你知道吗

[DB]
USER=username
PASS=password
HOST=127.0.0.l
DATABASE=database

Tags: inpyselfnoneconfigdbdefopen