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配置文件my.ini(在MySQLServer的安装目录),在[mysqld]这个条目下加入 skip-grant-tables

保存退出后重启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

python 连接mysql数据库报错

阿里云RDS报错:Too many connections

CentOS中设置Mysql的最大连接数max_connections(用于解决too many connections的问题)

mysql5.7.12报错如下情况导致无法连接数据库应该怎么办?

解决python连接mysql报错问题