python 连接mysql数据库报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 连接mysql数据库报错相关的知识,希望对你有一定的参考价值。
我用下面的代码连接另一台服务器上的mysql数据库,报错如下:
“Except MySQLdb.Errorase
AttribuyrError:'module 'object has no attribute 'errorase'”
请问是什么原因。谢谢
代码:
import MySQLdb
try:
conn=MySQLdb.coonect(host='10.137.58.102',user='username',passwd='passwd',db='tkittm_qmt2',port=3306)
cur=conn.cursor()
cur.execute('select * from pm_task')
cur.close()
conn.close()
except MySQLdb.Errorase:
print("Mysql Error %d: %s"%(e.args[0],e.args[1]))
保存退出后重启mysql
1.点击“开始”->“运行”(快捷键Win+R)。
2.启动:输入 net stop mysql
3.停止:输入 net start mysql
这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。按下面的流程走(红色部分为输入部分,绿色的是执行后显示的代码不用输入):
1.进入mysql数据库:
mysql> use mysql; Database changed
2.给root用户设置新密码,蓝色部分自己输入: mysql> update user set password=password("新密码") where user="root"; Query OK, 1 rows affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
3.刷新数据库 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
4.退出mysql: mysql> quit Bye
改好之后,再修改一下my.ini这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql就可以了。
总结:猜测根本原因就是简单的密码输入错误,通过以上方法我们可以不验证密码来连接上mysql,然后设置新密码。 参考技术A 提示很明显,MySQLdb模块没有errorase的属性 参考技术B “Except MySQLdb.Errorase” 改为“except OperationalError:”或“except Exception:”
解决python连接mysql报错问题
解决python连接mysql报错问题
最近跑python脚本时遇到一个问题,当sql语句中有中文时,执行python脚本报以下错误:
Traceback (most recent call last):
File "kpi_daily_report.py", line 356, in <module>
result = cal(line, sys.argv[1], sys.argv[2])
File "kpi_daily_report.py", line 324, in cal
result = run(sql)
File "kpi_daily_report.py", line 49, in run
rtn = conn31.selectall(sql)
File "/data0/home/yangjing150/test/kpidaily222/mysql_db_connector.py", line 100, in selectall
raise ex;
UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters in position 204-206: ordinal not in range(256)
经过查询与测试,下面三点可以完美解决问题
1、python脚本设置utf-8为默认字符集
import os, sys
import mysql
reload(sys)
sys.setdefaultencoding( "utf-8" )
2、mysql连接时,设置字符集charset=‘utf8‘
3、cursor执行sql语句时,加上字符集utf8的设置
self.cursor.execute(‘SET NAMES utf8;‘)
具体代码如下:
def selectall(self, commandText):
rtn = None
try:
if self.auto and self.con == None:
self.con = mysql.connect(host = self.host, port = self.port,
user = self.user, passwd = self.passwd, db = self.db,
connect_timeout = 1 ,charset=‘utf8‘)
if self.con:
self.cursor = self.con.cursor()
self.cursor.execute(‘SET NAMES utf8;‘)
if self.cursor:
self.cursor.execute(‘SET NAMES utf8;‘)
self.cursor.execute(commandText)
rtn = self.cursor.fetchall()
except Exception as ex:
raise ex;
finally:
if self.auto:
self.close()
return rtn
本文出自 “菜鸟地盘” 博客,请务必保留此出处http://yangjingangel.blog.51cto.com/8351501/1934665
以上是关于python 连接mysql数据库报错的主要内容,如果未能解决你的问题,请参考以下文章
mysql连接数太小,导致网站报错mysql:Too many connections
CentOS中设置Mysql的最大连接数max_connections(用于解决too many connections的问题)