Python游标的mysql错误

时间:2016-06-15 13:45:57

标签: python mysql

我尝试连接到mysql数据库时遇到错误。

import threading
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

class Queue (threading.Thread):
    def __init__(self, threadID, lock):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.lock = lock
    def run(self):
        while True:
            try:
                dbconfig = read_db_config()
                conn = MySQLConnection(**dbconfig)
                cursor = conn.cursor()
            except Error as e:
                print(e)
            finally:
                cursor.close()
                conn.close() 

这是代码的条纹部分,但我在finally:之后仍然在行上得到相同的错误,它表示未定义cursor。 代码在Ubuntu上的Deamon中运行。

编辑: 有关代码的更多信息 read_db_config()

from configparser import ConfigParser


def read_db_config(filename='config.ini', section='mysql'):
    """ Read database configuration file and return a dictionary object
    :param filename: name of the configuration file
    :param section: section of database configuration
    :return: a dictionary of database parameters
    """
    # create parser and read ini configuration file
    parser = ConfigParser()
    parser.read(filename)

    # get section, default to mysql
    db = {}
    if parser.has_section(section):
        items = parser.items(section)
        for item in items:
            db[item[0]] = item[1]
    else:
        raise Exception('{0} not found in the {1} file'.format(section, filename))

    return db

配置文件包含错误值

[mysql]
host = IP
database = database
user = user
password = password

EDIT2: 在没有try语句的情况下运行代码会出现此错误

mysql not found in the config.ini file

是不是我的read_db_config()函数找不到配置文件但是它们在同一个文件夹中。

2 个答案:

答案 0 :(得分:2)

所以...经过一些故障排除......

当从配置文件所在的文件夹外部调用脚本时,解决方案是set the current working directory

答案 1 :(得分:1)

我已经从read_db_config运行了你的代码,一切都没问题。 我认为问题是配置文件的路径。 如果你只是从你的应用程序的根路径,我的意思是:

- root_dir
    - parser.py
    - config.ini

你的函数运行良好,但是当你作为导入的lib运行时,你需要将整个路径传递给函数。

>>import os
>>parser = ConfigParser()
>>parser.read(os.path.abspath('<abs_path_of_config_file>')