首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到机器人框架中的SQL Server

连接到机器人框架中的SQL Server
EN

Stack Overflow用户
提问于 2021-01-03 12:48:41
回答 2查看 750关注 0票数 0

我试图在机器人框架中连接到server,因此我在pom.xml文件中添加了以下代码:

代码语言:javascript
复制
    <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>8.4.1.jre14</version>
</dependency>

我有以下机器人文件:

代码语言:javascript
复制
    *** Settings ***
    Documentation  Testing connection to the database!
    Library     SeleniumLibrary
    Library     DatabaseLibrary
    Library     OperatingSystem  
    #I'm not sure if we need OperatingSystem Library!!
    
    
    Suite Setup        Connect To Database      pymssql      ${DBName}    ${DBUser}     ${DBPass}    ${DBHost} 
    
   # Suite Setup        Connect To Database Using Custom Params   pymssql            ${DBName}    ${DBUser}     ${DBPass}    ${DBHost} 
    
    
    
    *** Variables ***
    ${DBName}         DatabaseName
    ${DBUser}         Username
    ${DBPass}         Password
    ${DBHost}         xx.xx.xx.xx
    
    
    
    *** Test Cases ***
    Testing Connect to SQL Server
        ${queryTest}=    Execute SQL String     select * from Users where Id=1
        log to console   ${queryTest} 

我得到了以下错误:

NoSectionError:无节:“默认”

我花了几天的时间试图连接到数据库,却没有运气!

EN

回答 2

Stack Overflow用户

发布于 2021-01-03 18:30:43

您可能丢失了./resources/db.cfg文件,如Connect To Database关键字的官方文档中所解释的那样。

还可以选择指定一个dbConfigFile,其中它将加载dbapiModuleName、dbName dbUsername和dbPassword的默认属性值(注意:指定dbapiModuleName、dbName dbUsername或dbPassword将直接覆盖dbConfigFile中相同键的属性)。如果没有指定dbConfigFile,则默认为./resources/db.cfg。

您没有指定任何其他的,因此它期望在我提到的位置中的默认位置。

在SO:Error: No section: 'default' in Robot Framework using DatabaseLibrary上也有一个类似的问题。

编辑:

因为它仍然不工作(见注释),我添加了这个部分。

在代码中,Connect To Database看起来是这样的:https://github.com/franz-see/Robotframework-Database-Library/blob/master/src/DatabaseLibrary/connection_manager.py#L37,函数的开头看起来如下(没有注释):

代码语言:javascript
复制
def connect_to_database(self, dbapiModuleName=None, dbName=None, dbUsername=None, dbPassword=None, dbHost=None, dbPort=None, dbCharset=None, dbConfigFile="./resources/db.cfg"):       
        config = ConfigParser.ConfigParser()
        config.read([dbConfigFile])

        dbapiModuleName = dbapiModuleName or config.get('default', 'dbapiModuleName')
        dbName = dbName or config.get('default', 'dbName')
        dbUsername = dbUsername or config.get('default', 'dbUsername')
        dbPassword = dbPassword if dbPassword is not None else config.get('default', 'dbPassword')
        dbHost = dbHost or config.get('default', 'dbHost') or 'localhost'
        dbPort = int(dbPort or config.get('default', 'dbPort'))

您将得到以下错误:

NoSectionError:无节:“默认”

发生在第81行:https://github.com/franz-see/Robotframework-Database-Library/blob/master/src/DatabaseLibrary/connection_manager.py#L81

这是因为dbapiModuleName是None (默认情况下,您不给它分配任何其他值),所以代码会在同一行中传递给or config.get('default', 'dbapiModuleName')。这就是您缺少./resources/db.cfg文件的地方,它试图从该文件中获取这个变量的值。

所以你要么提供所有的值,要么让文件在那里。

文档中提到的关键字:https://franz-see.github.io/Robotframework-Database-Library/api/1.2.2/DatabaseLibrary.html#Connect%20To%20Database,第一句是这样写的:

在给定的dbapiModuleName中加载DBAPI2.0模块,然后使用它使用dbName、dbUsername和dbPassword连接到数据库。

有关为dbapiModuleName提供什么值的其他信息可以在这里找到:How to use database library with Robot Framework on temporary sql server,但它不能像现在配置的那样为零。

票数 0
EN

Stack Overflow用户

发布于 2021-01-04 11:02:51

我对我的代码做了一个简单的修改,它成功了!!

代码语言:javascript
复制
Suite Setup    Connect To Database Using Custom Params    pymssql    '${DBHost}','${DBUser}','${DBPass}','${DBName}'

请注意:“主机”>“用户名”>“密码”>“数据库名”

参数的安排很重要!

注意:我不需要使用配置文件!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65550024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档