今天在使用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 远程连接数据库问题的更多相关文章
-
【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
-
Oracle数据库的创建以及远程连接(PL/SQL Developer远程连接数据库)
dbca: 创建数据库 netca: 创建监听程序 netmgr: 配置监听服务(将数据库服务注册到监听器上) netca 与 netmgr 两步可以直接在 ORACLE_HOME/network/a ...
-
SQL Server 2005如何远程连接数据库?
SQL Server 2005如何远程连接数据库? 方法/步骤 1 在配置工具中的服务和远程连接的外围应用配置器 --->远程连接-->本地连接和远程连接-->同时使用TCP/I ...
-
在本地没有安装Oracle的情况下,使用plsql远程连接数据库
远程连接数据库的方式不止一种.这里主要写在本地没有安装Oracle的情况下,使用plsql可视化工具远程连接数据库的方式. 一.前提 首先你本地得安装有plsql工具.具体的安装步骤就不多说了. 二. ...
-
Metasploit中数据库的密码查看以及使用pgadmin远程连接数据库
我们都知道,在msf下进行渗透测试工作的时候,可以将结果数据保存到数据库中,方便各个小组成员在渗透测试过程中的数据同步. 例如,Metasploit提供了db_nmap命令,它能够将Nmap扫描结果直 ...
-
使用navicat mysql 远程连接数据库
远程连接数据库,假设两台主机上都有navicat 客户端 远程主机A ip地址:192.168.100.91 ,port 3306,数据库用户名 rootA 密码 123456A 本地主 ...
-
JDBC远程连接数据库
使用jdbc远程连接数据库(非本地数据库)出现的问题可用的解决方法: 1.修改mysql配置文件 配置文件中注释掉 bind-address=127.0.0.1 2.修改数据库 登入mysql后,更改 ...
-
PostgreSQL - pgAdmin4远程连接数据库
前言 PostgreSQL在安装的时候自带的pgAdmin这个可视化工具,自从将PostgreSQL9升级到了10版本后,自带的pgAdmin也从3升级到了4版本.pgAdmin4的变化非常巨大,刚接 ...
-
使用python远程连接数据库
根据web连接服务的原理,我们可以通过一台电脑连接我们另一台电脑上的数据库 一.开启数据库的权限1.Mysql:1)修改访问权限首先修改可以访问的ip,把‘localhost’全部修改为‘%’,打开c ...
随机推荐
-
纯硬盘安装Kali 无需U盘
工具: EasyBCD 安装后启动,然后依次点击 添加新条目 >> NeoGrub >> 安装 然后如下图 点击配置,然后弹出一个记事本窗口,先最小化.进行如下操作: 1.拷贝 ...
-
MD5加密类方法
package com.shkj.android.utils; import java.security.MessageDigest;import java.security.NoSuchAlgori ...
-
android之ListView,详细介绍实现步骤,举例,自定义listview适配器
android之ListView,详细介绍实现步骤,举例,自定义listview适配器 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listVie ...
-
cf C. Tourist Problem
http://codeforces.com/contest/340/problem/C #include <cstdio> #include <cstring> #includ ...
-
centos7源以及相关的一些命令
yum makecache:将服务器上的软件包信息在本地缓存,以提高 搜索安装软件的速度. yum update:更新所有的rpm包 yum upgrade:大规模的版本升级,与yum update不 ...
-
使用 IDEA 创建 Maven Web 项目 (三)- 编写一个简单的 WEB 应用
编写 Servlet 类 首先,需要在 java 目录下,创建一个名为 org.smart4j.chapter1 的包.然后,在该包下创建一个 HelloServlet 的类,代码如下: packa ...
-
Vue项目使用webstorm开发 保存浏览器不自动更新问题
1.首先进去编辑器的设置页面 2.按照以下步骤进行操作,把如下选项的√去掉即可:
-
(不用循环也可以记录数组里的数)Color the ball --hdu--1556
题目: N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次 ...
-
Three.js开发指南---使用three.js的材质(第四章)
材质就像物体的皮肤,决定了几何体的外表,例如是否像草地/金属,是否透明,是否显示线框等 一 材质 THREE.js的材质分为多种,Three.js提供了一个材质基类THREE.Material, 该基 ...
-
jquery添加类
一.addClass() 方法向被选元素添加一个或多个类. 1.对P元素添加一个intro类.<!DOCTYPE html><html><head lang=" ...