sql-server - SQL 查询 - "TypeError: sequence item 0: expected string, Decimal found"使用值

标签 sql-server database python-2.7 robotframework

我已成功连接到我的数据库;我正在尝试运行一个 sql 查询并将表的第一个值获取到我的结果中,以便在我的测试步骤中进一步使用它。现在,我收到“TypeError:序列项 0:预期字符串,找到十进制”错误。请就如何从数据库表中获取单个值并将其放入屏幕字段以继续执行测试用例提出宝贵的想法。

请注意,我的sql查询结果都是整数类型值,但我仍然不知道为什么系统说找到小数。

下面是我的代码:

Connect to Database   pymssql  DBNAME  UNAME  PWD  PORTNO 
${QueryResult}= Query SelectQuery                             
Log  ${QueryResult[0]}              
Inputtext  id  ${QueryResult[0]}

我的日志关键字的输出是 (Decimal('2'),),它应该是一个表值 2。

在此之后,系统尝试将 (Decimal('2'),) 输入到字段中,并抛出上述错误。

最佳答案

您遇到了两个问题;第一个是——sql 查询的结果集是一个元组列表,例如二维结构。
每个列表成员(一个元组)是响应的一行;每个元组成员是该行中的一列。运行 Log 时可以看到:

Log  ${QueryResult[0]}
# the output is
#  (Decimal('2'),)
# e.g. "a single row, that has only one column" - just one tuple member

,这是整行。因此,要获得实际值,如果它在第一列中,则必须指定它:

${value}=    Set Variable    ${QueryResult[0][0]}
# if you run Log on it, the output most probably looks like this:
#   Decimal('2')

现在您有了值,但是您遇到了第二个问题 - 它的数据类型是复杂的 Decimal 类型。一般来说,这应该不是问题 - RF(实际上是 python)应该能够自动转换它,但是如果错误仍然存​​在/或者为了更加确定,您可以在 中使用它之前将其转换为字符串输入文本:

${value}=    Convert To String    ${value}    # now it's no longer Decimal, but plain str type
Input Text   id    ${value}

顺便说一句,不相关 - 我认为赋予 Input Text 关键字的定位器“id”不正确,只是复制了您在示例中使用的内容。

关于sql-server - SQL 查询 - "TypeError: sequence item 0: expected string, Decimal found"使用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382000/

相关文章:

c# - 必须声明标量变量@

sql-server - 重新停靠选项卡时 SSMS 18.8 崩溃

SQL Server - 从多个客户端同时插入表 - 检查限制和阻止

python - 如何在python中制作跨模块变量

python - python3需要重新安装numpy、spicy吗?

sql - 事务中 GO 命令的奇怪行为

php - 如果用户在过去 60 天内未在 codeigniter 中登录,则重定向到重置密码页面

database - 插入错误 : Syntax error and Unknown field

python - 在另一个 python 脚本中运行 python 脚本

database - 分配给 SQLite 内存数据库的内存大小