我用的是MYSQL數(shù)據(jù)庫,所以下面都是以MYSQL為基礎
-
1、在服務器上配置好MYSQL數(shù)據(jù)庫,并創(chuàng)建好數(shù)據(jù)庫和表(數(shù)據(jù)庫字符集和校對規(guī)則設置為utf8)
遇到的問題:
Robot Framework連接數(shù)據(jù)庫時報 ImportError: No module named MySQLdb 錯誤
解決:該錯誤是源于我們沒有安裝Python連接MySQL所需的MySQLdb庫而引起。安裝下即可:
對于不同的系統(tǒng)和程序有如下的解決方法:
pip install mysql-python (mix os)
apt-get install python-mysqldb (Linux Ubuntu)
cd/usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
yum install MySQL-python (linux Fedora, CentOS)
pip install mysqlclient (Windows) 2、Robot Framework安裝Database-Library
使用Pip安裝:pip install robotframework_databaselibrary3、選一個數(shù)據(jù)庫連接的驅(qū)動(MySQLdb、pymysql、pyodbc等)
MySQLdb可以直接用,pymysql和pyodbc需要下載驅(qū)動和配置
具體可見[robotframwork數(shù)據(jù)庫驅(qū)動選擇——pymysql與pyodbc](http://www.cnblogs.com/testwang/p/6043228.html)
注:我這里選擇用MySQLdb,其他兩個需要下載驅(qū)動和配置,網(wǎng)上說對中文較為友好,但我還未遇到這方面的問題,所以先用MySQLdb,待遇到問題了再研究。-
4、數(shù)據(jù)庫連接
MySQLdb:db=數(shù)據(jù)庫名,user=連接數(shù)據(jù)庫賬號,passwd=數(shù)據(jù)庫密碼,host=數(shù)據(jù)庫地址,port=數(shù)據(jù)庫端口,charset=編碼方式(該參數(shù)不加會報編碼錯誤)
pymysql:database=數(shù)據(jù)庫名,user=連接數(shù)據(jù)庫賬號,password=數(shù)據(jù)庫密碼,host=數(shù)據(jù)庫地址,port=數(shù)據(jù)庫端口,charset=編碼方式(該參數(shù)不加會報編碼錯誤)pyodbc:還沒試過,待完善
遇到的問題:
FAIL UnicodeEncodeError: 'latin-1' codec can't encode characters in position 92-107: ordinal not in range(256)
MySQLdb正常情況下會嘗試將所有的內(nèi)容轉(zhuǎn)為latin1字符集處理,而一般系統(tǒng)中文不支持latin1字符集,所以DataBaseLibrary插入中文時報錯。
解決方法1:如上面在參數(shù)里加上 charset='utf8' 參數(shù)即可(適用Connect To Database Using Custom Params關鍵字)
解決方法2:如果要用 Connect To Database 關鍵字,則需修改C:\Python27\Lib\site-packages\DatabaseLibrary\connection_manager.py里的connect_to_database函數(shù),self._dbconnection = db_api_2.connect (db=dbName, user=dbUsername, passwd=dbPassword, host=dbHost, port=dbPort, charset="utf8"),增加charset設定 5、插入數(shù)據(jù)
用 Execute Sql String 關鍵字(執(zhí)行Sql語句)做插入操作——吐槽:這個語句竟然沒有返回...
INSERT INTO chinaparking_mydb.parkinglot (ID, RCLSH, CPH, SRSJ, SLSJ, TCCID, TCCZH, FKJE,TCZT, CJSJ)VALUES(NULL, '${入場流水號}', '${車牌號}', '${駛?cè)霑r間}', NULL, '${tccid}', '${yptzh}', NULL, '0', now());
遇到的問題:出現(xiàn)Incorrect integer value: '' for column 'id' at row 1的錯誤
網(wǎng)上查資料發(fā)現(xiàn)5以上的版本如果是空值應該要寫NULL,這種問題一般mysql 5.x上出現(xiàn)。
解決方法:把空值的地方都改成NULL(就像上面一樣)


