我尝试连接到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()函数找不到配置文件但是它们在同一个文件夹中。
答案 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>')