首页 > 编程知识 正文

python连接mysql异常的简单介绍

时间:2023-12-24 12:06:04 阅读:321510 作者:WHOV

本文目录一览:

MySQL-python连接MySQL数据库问题,总是抛异常。

不要刚开始学多线程编程就这样玩。connection 和 cursor 都不是线程安全的。

如果测试环境用多个线程,每个线程要在线程里面获取自己的 connection,然后从这个connection 获取 cursor.

如果生产环境用多个线程,建议使用线程安全的连接池。

python连接mysql数据库出错,已经尝试了网上的几种解决方法

这里的意思是:数据库连不上啊。

可能是网络问题,可能是防火墙问题,可能是3306端口没开。你先排除这些问题吧。用一些mysql工具连接测试看,比如SQLyog 测试。

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的例子,你可以参考一下。

如果解决了您的问题请采纳!

如果未解决请继续追问!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。