今天在使用RF远程连接数据库时出现报错的问题,因为我发现只安装databaselibrary跟PyMsql的话,连接本地的数据库是OK的,但是如果我们的测试机性能有限,那么既要编写代码、运行测试、还有打开各种浏览器,再加上一个数据库的话就会卡的不成型,所以最好能把数据库部署到其他服务器上,这里我新部署的数据库主要用于存在测试数据,因为很多地方都需要录入数据,做成列表或者是字典每次都要修改,而且我们公司的表单很多,一个页面有50个要录入的数据,这种情况下我想到用数据库的方式,提前在数据库生成上万条不重复的数据,每次去读取一条,用完后直接在RF命令删除,这样保证测试永远不会因为数据重复报错,回到问题本质:

我遇到第一次报错如下:

No module named  cryptography.hazmat,怎么办?看名字应该是说少了cryptography这个库,于是我去pipy下载这个资源包去python setup.py install的方式安装(因为我的测试机不能联网)

结果发现网上的包都不完整,还是要联网下载,这个方案PASS;

怎么办?我想到另外一种方式,我找到一个能pip上网的电脑也有python环境的,然后我用pip install  cryptography ,安装完成后,我去Lib\site-packages下把刚安装的包全部选择复制(PS:怎么确定要复制哪些?最简单的办法根据修改时间,必须全部复制),估计有十多个文件,有很多库是自动安装的

把复制的文件全部考到测试机的Lib\site-packages下,然后运行cmd   pip  list就会发现增加了很多库,这时候我再去把做好的数据库链接脚本运行,发现还是报错,这次报错如下:

No module named six      ;这次去网上看了下有人说要安装matplotlib ;有人说要去复制文件,最后我还是在能上网的环境安装了matplotlib;pip install matplotlib ;然后拷贝到测试环境Lib\site-packages下 ,我在测试环境cmd下  python   import matplotlib   还是报错no module named six  

我去能上网环境cmd下;  python   import matplotlib  却没有报错,这时候我仔细检查了下上网环境的Lib\site-packages文件夹下,发现了这三个six.pyc,six.py,six-1.11.0.dist-info 我把这三个复制到测试环境下,在运行脚本,就发现成功了,并且从服务器数据库读出了我想要的数据。

但是这里的汉字都是显示的如下:

'\xe7\xbd\x91\xe4\xb8\x8a\xe5\xbc\x80\xe6\xa0\x87\xe7\xae\xa1\xe7\x90\x86'

这些并不是我们想要的结果,如何把这类的看似是Unicode的编码转化为我们想要的中文utf8呢

我看到的三种做法:

第一种:做法是在在pymysql 连接尾部加上charset="UTF8"即可解决:

Connect to Database     pymysql     basedb_dy    root    密码    IP  3306 charset="UTF-8"

经过测试显示的还是u+unicode的编码,所以不推荐这个方式

第二种:直接把取出来的结果进行转化,用RF提供的Evaluate调用decode()来实现,代码如下:

${etrole}	query	select fname from etrole
${etroledecode2} Evaluate '${etrole[0][0]}'.decode('UTF-8')
log ${etroledecode2}

这样我们就能把这个字段转化为中文

第三种:直接二次开发写一个自己的转化关键字,或者直接在DatebaseLibrary中添加一个decode,这里推荐后者,去Python27\Lib\site-packages\DatabaseLibrary找到query.py文件,在末尾加入:

    def decode(self, customstr, mode):
return customstr.decode(mode)

  保存后,重启ride,调用这个decode关键字即可:

代码如下:

${etrole}	query	select fname from etrole
${etroledecode} decode ${etrole[0][0]} UTF-8
log ${etroledecode}

  

robotframework 远程连接数据库问题的更多相关文章

  1. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  2. Oracle数据库的创建以及远程连接(PL/SQL Developer远程连接数据库)

    dbca: 创建数据库 netca: 创建监听程序 netmgr: 配置监听服务(将数据库服务注册到监听器上) netca 与 netmgr 两步可以直接在 ORACLE_HOME/network/a ...

  3. SQL Server 2005如何远程连接数据库?

    SQL Server 2005如何远程连接数据库? 方法/步骤   1 在配置工具中的服务和远程连接的外围应用配置器 --->远程连接-->本地连接和远程连接-->同时使用TCP/I ...

  4. 在本地没有安装Oracle的情况下,使用plsql远程连接数据库

    远程连接数据库的方式不止一种.这里主要写在本地没有安装Oracle的情况下,使用plsql可视化工具远程连接数据库的方式. 一.前提 首先你本地得安装有plsql工具.具体的安装步骤就不多说了. 二. ...

  5. Metasploit中数据库的密码查看以及使用pgadmin远程连接数据库

    我们都知道,在msf下进行渗透测试工作的时候,可以将结果数据保存到数据库中,方便各个小组成员在渗透测试过程中的数据同步. 例如,Metasploit提供了db_nmap命令,它能够将Nmap扫描结果直 ...

  6. 使用navicat mysql 远程连接数据库

    远程连接数据库,假设两台主机上都有navicat 客户端 远程主机A    ip地址:192.168.100.91  ,port  3306,数据库用户名 rootA   密码 123456A 本地主 ...

  7. JDBC远程连接数据库

    使用jdbc远程连接数据库(非本地数据库)出现的问题可用的解决方法: 1.修改mysql配置文件 配置文件中注释掉 bind-address=127.0.0.1 2.修改数据库 登入mysql后,更改 ...

  8. PostgreSQL - pgAdmin4远程连接数据库

    前言 PostgreSQL在安装的时候自带的pgAdmin这个可视化工具,自从将PostgreSQL9升级到了10版本后,自带的pgAdmin也从3升级到了4版本.pgAdmin4的变化非常巨大,刚接 ...

  9. 使用python远程连接数据库

    根据web连接服务的原理,我们可以通过一台电脑连接我们另一台电脑上的数据库 一.开启数据库的权限1.Mysql:1)修改访问权限首先修改可以访问的ip,把‘localhost’全部修改为‘%’,打开c ...

随机推荐

  1. Game Engine Architecture 8

    [Game Engine Architecture 8] 1.Differences across Operating Systems • UNIX uses a forward slash (/) ...

  2. Oracel递归查询start with ...connect by prior在Mysql中的实现

    Oracle是一个强大的数据库,有很多的函数和语法可以带来很多便利,有些函数和语法在Mysql中有代替的,但是有些没有现成可用的方法,比如Oracle的递归,在Mysql中怎么实现呢? 例子: Ora ...

  3. ucos中的中断管理

    一.中断的概念 中断是一种硬件机制,用于处理异步事件.中断的实时性比轮询要好,通过中断,微控制器可以在异常发生的时候立刻进行处理,而不需要不断轮询事件是否发生. CM3支持中断嵌套,使得高优先级异常可 ...

  4. Nancy.Net之旅-探索模块

    探索Nancy模块 模块是任何Nancy应用程序中的主角,因为它是您定义应用程序行为的地方,所以无法避免使用它. 事实上,在任何的Nancy应用程序中,声明模块是最基本的要求. 通过继承NancyMo ...

  5. vim高级工能入门

    一.多文件编辑 1.vim   1.txt  2.txt  3.txt同时打开3个文件在vim缓冲区, 命令模式下输入:n 切换到下一个文件,可以加!:n! 强制切换,之前那个没有保存,仅仅是切换. ...

  6. vue加elementui开发的分页显示

    由于我的是公共引入样式表和css表所以,将公共的也写出来了(我接手的项目为基于vue开发的) 公共的index.html 引入js <script src="{MODULE_URL}s ...

  7. poj3250(单调栈模板题)

    题目链接:https://vjudge.net/problem/POJ-3250 题意:求序列中每个点右边第一个>=自身的点的下标. 思路:简单介绍单调栈,主要用来求向左/右第一个小于/大于自身 ...

  8. 微信小程序超出两行省略号

    display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; white-space: ...

  9. Python开发【第十篇】:Redis

    缓存数据库介绍 NoSQL(Not Only SQL),即"不仅仅是SQL",泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应对web2.0网站,特别是 ...

  10. 使用Jmeter连接数据库检查数据库记录的方法

    一.首先下载Jdbc驱动(jdbc驱动分两种,classes与ojdbc文件,该用哪个需要检查电脑安装的jdk版本(查看方法cmd命令java –version) 关于各种版本的说明:http://e ...