python 连接mysql 时,connect 出现错误,怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 连接mysql 时,connect 出现错误,怎么解决相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-
import mysqldb
from MySQLdb.cursors import DictCursor


def catch_2006(func):
    """
    To catch MySQL Error 2006 (\'Server has gone away\')
    """

    def _(self, *args, **kwargs):
        try:
            return func(self, *args, **kwargs)
        except MySQLdb.Error, e:
            print __file__, e
            if e.args[0] == 2006 or e.args[0] == 0:
                self.reboot_conn()
                return func(self, *args, **kwargs)
                # todo
                # How to deal if not the code

    return _


class DB(object):
    def __init__(self, host, port, user,
                 passwd, db, use_unicode=True, charset=\'utf8\'):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.use_unicode = use_unicode
        self.charset = charset

    @property
    def conn(self):
        if not hasattr(self, \'__conn\'):
            self.__conn = MySQLdb.connect(
                host=self.host,
                port=self.port,
                user=self.user,
                passwd=self.passwd,
                db=self.db,
                use_unicode=self.use_unicode,
                charset=self.charset
            )
        return self.__conn

    def reboot_conn(self):
        if hasattr(self, \'__conn\'):
            try:
                self.__conn.close()
                del self.__conn
            except:
                pass

    @catch_2006
    def query(self, sql, args=None):
        print sql
        cursor = self.conn.cursor()
        cursor.execute(sql, args)
        cursor.execute(\'commit\')
        cursor.close()

    @catch_2006
    def select(self, sql, args=None, is_dict=False, is_one=False):
        # print sql, args
        if is_dict:
            cursor = self.conn.cursor(cursorclass=DictCursor)
        else:
            cursor = self.conn.cursor()
        cursor.execute(sql, args)
        if is_one:
            resultset = cursor.fetchone()[0]
        else:
            resultset = cursor.fetchall()
        cursor.close()
        return resultset

这个是我以前项目中使用python链接mysql的例子,你可以参考一下。


如果解决了您的问题请采纳!
如果未解决请继续追问!

参考技术A 你把错误提示发上呀,不然怎么知道哪里错了. 参考技术B 用户名,密码,还有端口号,地址。这些都没问题么?

以上是关于python 连接mysql 时,connect 出现错误,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

Python连接MySQL数据库执行sql语句时的参数问题

python连接MySQL

python 远程连接数据库显示can't connect to mysql server on 'lo... 解决方案

在 Django 1.11 中使用 MySQL 连接器/Python 时出错

Python访问MySQL

Python 中操作 MySQL 步骤