Skip to content

Commit 5b1279e

Browse files
committed
BUG23568257: Add fetch_one method to mysqlx.result
Added test cases for regression.
1 parent def5474 commit 5b1279e

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

lib/mysqlx/result.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,17 @@ def _page_in_items(self):
688688
count += 1
689689
return count
690690

691+
def fetch_one(self):
692+
""" Fetch one item.
693+
694+
Returns:
695+
Row/DbDoc: one result item.
696+
"""
697+
if self._closed:
698+
return None
699+
700+
return self._read_item(False)
701+
691702
def fetch_all(self):
692703
"""Fetch all items.
693704

tests/test_mysqlx_crud.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,11 @@ def test_results(self):
275275
docs1 = result1.fetch_all()
276276
self.assertEqual(4, len(docs1))
277277

278+
result3 = collection.find("age > 28").sort("age DESC").execute()
279+
self.assertEqual("Betty", result3.fetch_one()["name"])
280+
self.assertEqual("Wilma", result3.fetch_one()["name"])
281+
self.assertEqual(None, result3.fetch_one())
282+
278283
# def test_create_index(self):
279284
# collection_name = "collection_test"
280285
# collection = self.schema.create_collection(collection_name)
@@ -517,6 +522,23 @@ def test_count(self):
517522
self.assertEqual(table.count(), 1)
518523
self.schema.drop_table(table_name)
519524

525+
def test_results(self):
526+
table_name = "{0}.test".format(self.schema_name)
527+
528+
self.node_session.sql("CREATE TABLE {0}(age INT, name VARCHAR(50))"
529+
"".format(table_name)).execute()
530+
self.node_session.sql("INSERT INTO {0} VALUES (21, 'Fred')"
531+
"".format(table_name)).execute()
532+
self.node_session.sql("INSERT INTO {0} VALUES (28, 'Barney')"
533+
"".format(table_name)).execute()
534+
535+
table = self.schema.get_table("test")
536+
result = table.select().execute()
537+
538+
self.assertEqual("Fred", result.fetch_one()["name"])
539+
self.assertEqual("Barney", result.fetch_one()["name"])
540+
self.assertEqual(None, result.fetch_one())
541+
520542
def test_multiple_resultsets(self):
521543
self.node_session.sql("CREATE PROCEDURE {0}.spProc() BEGIN SELECT 1; "
522544
"SELECT 2; SELECT 'a'; END"

0 commit comments

Comments
 (0)