RF-DatabaseLibrary數(shù)據(jù)庫連接實測和問題記錄(windows)

我用的是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_databaselibrary

  • 3、選一個數(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(就像上面一樣)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容