微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的备份mysql.py中有ConfigParser.NoOptionError

如何解决我的备份mysql.py中有ConfigParser.NoOptionError

我创建了python文件 backup-MysqL.py ,在 之后。/backup-MysqL.py 我有 ConfigParser.NoOptionError

#!/usr/bin/python
#Importing the modules
import os
import ConfigParser
import time

# On Debian,/etc/MysqL/debian.cnf contains 'root' a like login and password.
config = ConfigParser.ConfigParser()
config.read("/etc/MysqL/debian.cnf")
username = config.get('client','root')
password = config.get('client','password')
hostname = config.get('client','localhost')
filestamp = time.strftime('%Y-%m-%d')

# Get a list of databases with :
database_list_command="MysqL -u %s -p%s -h %s --silent -N -e 'show databases'" % (username,password,hostname)
for database in os.popen(database_list_command).readlines():
    database = database.strip()
    if database == 'information_schema':
        continue
    if database == 'performance_schema':
        continue
    filename = "/backups/MysqL/%s-%s.sql" % (database,filestamp)
    os.popen("MysqLdump --single-transaction -u %s -p%s -h %s -d %s | gzip -c > %s.gz" % (username,hostname,database,filename))

之后。/backup-MysqL.py

root@rd:/home/pi/apps# ./backup-MysqL.py
Traceback (most recent call last):
  File "./backup-MysqL.py",line 10,in <module>
    username = config.get('client','root')
  File "/usr/lib/python2.7/ConfigParser.py",line 618,in get
    raise NoOptionError(option,section)
ConfigParser.NoOptionError: No option 'root' in section: 'client'
root@rd:/home/pi/apps# nano backup-MysqL.py
root@rd:/home/pi/apps# ./backup-MysqL.py
Traceback (most recent call last):
  File "./backup-MysqL.py",section)
ConfigParser.NoOptionError: No option 'root' in section: 'client'
root@rd:/home/pi/apps#

我有root用户。我现在不怎么了吗?

有关debian.cnf文件的更多信息

root@rd:/home/pi/apps# cat /etc/MysqL/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = root
password =
socket   = /var/run/MysqLd/MysqLd.sock
[MysqL_upgrade]
host     = localhost
user     = root
password =
socket   = /var/run/MysqLd/MysqLd.sock
basedir  = /usr

此主体不需要太多代码

解决方法

您的错误消息显示为

Traceback (most recent call last):
  File "./backup-mysql.py",line 10,in <module>
    username = config.get('client','root')
  File "/usr/lib/python2.7/ConfigParser.py",line 618,in get
    raise NoOptionError(option,section)
ConfigParser.NoOptionError: No option 'root' in section: 'client'

首先,它告诉您错误的发生位置:第10行,第10行说

username = config.get('client','root')

因此,您正在尝试从名为“客户端”的部分读取名为“ root”的字段。错误消息告诉您底部出现了什么问题:No option 'root' in section: 'client'

查看您要读取的文件,您会发现在“客户端”中确实没有选项“ root”:

[client]
host     = localhost
user     = root
password =
socket   = /var/run/mysqld/mysqld.sock

我怀疑您确实是在尝试阅读“用户”选项。因此将第10行更改为

username = config.get('client','user')

第12行还应该读取“主机”选项,而不是“本地主机”选项,因为它也不存在。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。