sql-server - RobotFramework 使用自定义参数连接到数据库的问题
问题描述
遇到错误 OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝。(17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]ConnectionOpen (Connect()).(53)'
*** Settings ***
Documentation Simple example using DBLibrary.
Library SeleniumLibrary
Library DatabaseLibrary
*** Variables ***
${DBHost_ConnectionString} 'DRIVER={SQL Server};SERVER="hostname";UID="uname";PWD="******";DATABASE="dbname"'
*** Test Cases ***
Connect Database
Connect To Database Using Custom Params pyodbc ${DBHost_ConnectionString}
我尝试了互联网上的所有解决方案,例如将端口添加到连接字符串,在服务器名之前附加 tcp 等,遵循 dbapi https://github.com/franz-see/Robotframework-Database-Library/的源代码中提到的实现blob/master/src/DatabaseLibrary/connection_manager.py
elif dbapiModuleName in ["pyodbc", "pypyodbc"]:
dbPort = dbPort or 1433
logger.info('Connecting using : %s.connect(DRIVER={SQL Server};SERVER=%s,%s;DATABASE=%s;UID=%s;PWD=%s)' % (dbapiModuleName, dbHost, dbPort, dbName, dbUsername, dbPassword))
self._dbconnection = db_api_2.connect('DRIVER={SQL Server};SERVER=%s,%s;DATABASE=%s;UID=%s;PWD=%s' % (dbHost, dbPort, dbName, dbUsername, dbPassword))
任何帮助都应该不胜感激。
解决方案
作为猜测,您不应该用单引号将连接字符串括起来,因为它们会成为连接字符串的一部分。Robot 不是 python,robot 不是 shell,所以你通常不需要引用字符串。
*** Variables ***
${DBHost_ConnectionString} DRIVER={SQL Server};SERVER="hostname";UID="uname";PWD="******";DATABASE="dbname"
目前尚不清楚您是在字面上使用字符串hostname
anduname
等,还是出于问题的目的,这只是样板文件。您需要传递实际的主机名和实际的用户名和密码。
您可能不需要其他值的引号,在这种情况下,它看起来像这样:
*** Variables ***
${DBHost_ConnectionString} DRIVER={SQL Server};SERVER=hostname;UID=uname;PWD=******;DATABASE=dbname
推荐阅读
- apache-kafka - 卡夫卡流在scala中计数不同?
- javascript - 从我使用 Chrome 扩展程序注入网页的 iFrame 获取 LocalStorage
- python-3.x - 在py中更改日期时间格式
- c++ - C++ duration_cast<>(time_point_end - tine_point_start)。count() 溢出
- google-apps-script - Google App Maker:日期驱动的电子邮件通知
- sql-server - 如何将存储过程中的指定列插入#tempTable
- ios - 在 SwiftCharts 中使用未解析的标识符“值”
- lua - lua 表 - 允许的值和语法
- ssl - SSL 拦截代理
- qtp - 使用 HP QTP 有没有办法测试哪个按钮是默认按钮?