python读取配置文件连接mysql遇到的问题
1.我创建了一个cfg.ini的配置文件,用于存放用到的配置,其中包含数据库的配置信息
2.使用configparser读取配置文件cfg.ini的数据库配置信息
[database]
host=172.16.1.11
port=3306
name=name
user=user
password=pass
charset=utf-8
host=cf.get('database','host')
port = cf.get('database','port')
name = cf.get('database','name')
user = cf.get('database','user')
password = cf.get('database','password')
3.并使用pymysql.connect连接mysql数据库,遇到第一个问题如下,查阅资料后将charset=utf-8修改成charset=utf8,此问题解决
self.encoding = charset_by_name(self.charset).encoding
AttributeError: 'NoneType' object has no attribute 'encoding'
4.再次连接数据库,返回错误1),将配置文件中的host值加上引号后再次连接数据库返回错误2)
1) self.host_info = "socket %s:%d" % (self.host, self.port)
TypeError: %d format: a number is required, not str
pymysql.err.OperationalError: (2003, 'Can\'t connect to MySQL server on "\'172.16.1.11\'" ([Errno 8] nodename nor servname provided, or not known)')
5.我很肯定我配置文件里的用户名和密码是没有问题的,为了排查出问题所在,我将host和port直接复制,其他配置仍读取配置文件,报错如下
pymysql.err.OperationalError: (1045, "Access denied for user 'cat'@'172.21.110.89' (using password: YES)")
6.网上查了一下,说是用户名密码是正确的,是权限问题,本地ip没有权限访问,这肯定就不对了,因为我navicat也是直接本地ip访问的,未了验证问题,我引掉了连接配置文件数据的代码,直接赋值数据库信息
'''
conn = pymysql.connect(host='172.16.1.11',
port=3306,
user=user,
passwd=password,
db=name,
charset=charset)
'''
conn=pymysql.connect(host='172.16.1.11',
port=3306,
user='user',
passwd='passwd',
db='db',
charset='utf8')
cur=conn.cursor()
cur.execute("select * from table'")
result=cur.fetchall()
print(result)
7.直接赋值数据,连接成功了,所以可以确定 1045的那个问题和权限是木有一分钱关系的,继续网上翻资料和不断是验证,最后我发现,使用 configparser读取处理的配置数据类型是str,于是我将使用配置文件数据连接的代码修改如下,port强制转换成int
host=cf.get('database','host')
port =int (cf.get('database','port'))
name = cf.get('database','name')
user = cf.get('database','user')
password = cf.get('database','password')
charset =cf.get('database','charset')
print(host,port,name,user,password,charset)
conn = pymysql.connect(host=host,
port=port,
user=user,
passwd=password,
db=name,
charset=charset)
cur=conn.cursor()
cur.execute("select * from table")
result=cur.fetchall()
print(result)
8.在我不懈努力的折腾下,最终数据库连接成功
来源:CSDN
作者:小小小小小菜鸟儿
链接:https://blog.csdn.net/smallchildrenboy/article/details/103984108