RobotFramework ODBC 解决数据库返回中文乱码问题


ODBC方法-解决数据库返回中文乱码问题

1.先安装pyodbc,通过pip install pyodbc
2.pyodbc连接mysql,需要windows工具mysql connector,下载对应版本的.msi文件后,直接安装
3.安装完成后,需要配置ODBC数据源
(1)安装完成mysql-connector-odbc-5.1.8-winx64.msi文件后
(2)打开控制面板 > 管理工具 > ODBC数据源(64/32)根据对应选择
(3)点击添加,打开创建数据源选择弹框,选择Mysql ODBC 5.1 driver,点击“完成”
(4)弹出mysql代理地址填写框,填写对应ip、user,pass后,点击“OK”即添加成功
4.在使用RF查找数据库返回值时,有时获取的是中文,但在RF中识别出来是乱码.

数据库默认编码不是Utf-8,需要人工转换一下。DataBaseLibrary自身没有提供转换函数,为了解决这个问题,我们需要对DataBaseLibrary进行扩展。

1. 进入到安装DataBaseLibrary的存放路径,找到query.py

路径每人不一样,我是安装的postgreSQL的API驱动,存放路径是F:\Python27\Lib\site-packages\robotframework_databaselibrary-0.8.1-py2.7.egg\DatabaseLibrary

但有的人路径就直接在site-packages/DatabaseLibrary下面。

 

2.打开query.py,在文件末尾加入如下decode解码方法

def decode(self, code):
  return code.decode('utf-8')

然后重新导入DatabaseLibrary库。

在导入DatabaseLibrary库的时候,需要多导入几次,不然显示红色,无法成功导入。另外就是修改query.py代码的时候,一定要把代码对齐,仔细检查!!!

3.在RF中调用decode,对返回结果进行解码

保存代码后,重新打开robot运行脚本发现查询结果已经变成了中文。

【此处注意:sql查询结果需为字符串类型,如结果为整行sql则转码依然会报错。
例如:int类型不支持转码】

如以上代码添加后,依然不显示中文,可修改以上code为:
def decode(self,code):
        test=code.encode('utf-8')
        return test.decode('utf-8')
保存后,重新打开运行robot脚本,如依然不能解决乱码问题,可参考另外一种解决方法:

链接地址:
http://blog.csdn.net/huashao0602/article/details/55045719


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM