今天,用Python连接MySQL数据库时出现can’t connect to MySQL server on ‘localhost’(10061)问题,如图(1)所示:
但是,右击桌面右下角【开始】—》mySQL —》输入对应的密码和用户名,查询数据库xingqu里demo表却可以执行,如图(2)所示:
这说明c:\windows\system32\drivers\etc目录里,文件hosts里的localhost属性没有配置,添加如下代码即可:
127.0.0.1 localhost
另外,如果你的网络为IPv6,还需要在../MySQL/MySQL Server 5.1 /my.ini里,[mysqld]字段下配置bind-address属性,如下:
bind-address = 127.0.0.1
Python连接MySQL5.1的测试代码:
//linkDB.py
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',
db='xingqu',port=3306)
cur=conn.cursor()
cur.execute('select * from demo')
datas = cur.fetchall()
for data in datas:
print data[:]
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
效果如下:
请根据自己MySQL的名称、密码、字符集、表格名进行修改。如果你MySQL的字符集为gb2312,则chartset=’gb2312’,代码为:
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',
db='xingqu',port=3306,charset='gb2312')
cur=conn.cursor()
cur.execute('select * from demo')
datas = cur.fetchall()
for data in datas:
print data[:]
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
有时候,需要关闭防火墙和显示地指明本机地址:127.0.0.1,代码如下:
import MySQLdb
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',
db='xingqu',port=3306,charset='gb2312')
cur=conn.cursor()
cur.execute('select * from demo')
datas = cur.fetchall()
for data in datas:
print data[:]
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])