解决python连接mysql报错问题-创新互联

解决python连接mysql报错问题

创新互联公司是专业的洛阳网站建设公司,洛阳接单;提供网站设计、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行洛阳网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

最近跑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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享文章:解决python连接mysql报错问题-创新互联
文章链接:https://www.cdcxhl.com/article40/doopho.html

成都网站建设公司_创新互联,为您提供营销型网站建设企业建站品牌网站制作商城网站标签优化搜索引擎优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设