когда выполняю Query:
${queryResults} Query select first_name from person
то получаю как я понимаю список значений в таком формате:
${queryResult} = [(‘Simpson’,)]
и потом нужно выполнять какие-то дополнительные действия типа split string несколько раз, чтоб в итоге получить само значение:
${queryResult} = Simpson
Как можно сразу получить такой результат без лишних действий? Может есть другая библиотека?
Вот всегда рекомендую людям, которые работают с Robot Framework. Сначала надо немного подучить python, тогда намного проще разбираться в деталях фреймворка.
На выходе ты получаешь список, внутри кортежи, т.е. тоже последовательность, которая достается по индексу.
Так что в данном случае тебе нужно просто вытащить значение по индексу из вложенных последовательностей.
${queryResults} Query select first_name from person
Log ${queryResults[0][0]}
но кейворд log ничего не возвращает как я понимаю, нельзя с его результатом работать дальше.
Мне потом дальше нужно брать это значение и проверять его и т.д.
ну потому что там есть дефект, нужно подправить библиотеку, вот исправленный код
def row_count(self, selectStatement):
"""
Uses the input `selectStatement` to query the database and returns
the number of rows from the query.
For example, given we have a table `person` with the following data:
| id | first_name | last_name |
| 1 | Franz Allan | See |
| 2 | Jerry | Schneider |
When you do the following:
| ${rowCount} | Row Count | select * from person |
| Log | ${rowCount} |
You will get the following:
2
Also, you can do something like this:
| ${rowCount} | Row Count | select * from person where id = 2 |
| Log | ${rowCount} |
And get the following
1
"""
cur = None
try:
cur = self._dbconnection.cursor()
self.__execute_sql(cur, selectStatement)
cur.fetchall()
rowCount = cur.rowcount
return rowCount
finally:
if cur:
self._dbconnection.rollback()
return received
def __execute_sql(self, cur, sqlStatement):
logger.debug("Executing : %s" % sqlStatement)
return cur.execute(sqlStatement)
Для этого нужна уже отдельная тема. Справа от коммента есть “Ответить в новой теме”, создавай новую тему и я думаю @DmitriyZverev тебе сразу же ответит, я знаю у него точно есть решение