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

 我来答
茹计邑
2016-10-24 · 超过34用户采纳过TA的回答
知道答主
回答量:201
采纳率:0%
帮助的人:55.2万
展开全部
# -*- 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的例子,你可以参考一下。

如果解决了您的问题请采纳!
如果未解决请继续追问!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式