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

 我来答
老夭来了
推荐于2016-11-13 · 知道合伙人软件行家
老夭来了
知道合伙人软件行家
采纳数:1806 获赞数:8100
2008年从事软件开发,拥有多年的python,php,linux工作经验,发布过多个python,php的开源项目。

向TA提问 私信TA
展开全部
# -*- 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的例子,你可以参考一下。


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

xpresslink
2015-02-05 · TA获得超过3705个赞
知道小有建树答主
回答量:272
采纳率:87%
帮助的人:97.6万
展开全部
你把错误提示发上呀,不然怎么知道哪里错了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ibangbangcn
2015-02-05 · TA获得超过2654个赞
知道大有可为答主
回答量:3368
采纳率:16%
帮助的人:1448万
展开全部
用户名,密码,还有端口号,地址。这些都没问题么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式