MCPcopy Create free account
hub / github.com/PyMySQL/PyMySQL / TestNextset

Class TestNextset

pymysql/tests/test_nextset.py:8–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7
8class TestNextset(base.PyMySQLTestCase):
9 def test_nextset(self):
10 con = self.connect(
11 init_command='SELECT "bar"; SELECT "baz"',
12 client_flag=CLIENT.MULTI_STATEMENTS,
13 )
14 cur = con.cursor()
15 cur.execute("SELECT 1; SELECT 2;")
16 self.assertEqual([(1,)], list(cur))
17
18 r = cur.nextset()
19 self.assertTrue(r)
20
21 self.assertEqual([(2,)], list(cur))
22 self.assertIsNone(cur.nextset())
23
24 def test_skip_nextset(self):
25 cur = self.connect(client_flag=CLIENT.MULTI_STATEMENTS).cursor()
26 cur.execute("SELECT 1; SELECT 2;")
27 self.assertEqual([(1,)], list(cur))
28
29 cur.execute("SELECT 42")
30 self.assertEqual([(42,)], list(cur))
31
32 def test_nextset_error(self):
33 con = self.connect(client_flag=CLIENT.MULTI_STATEMENTS)
34 cur = con.cursor()
35
36 for i in range(3):
37 cur.execute("SELECT %s; xyzzy;", (i,))
38 self.assertEqual([(i,)], list(cur))
39 with self.assertRaises(pymysql.ProgrammingError):
40 cur.nextset()
41 self.assertEqual([], cur.fetchall())
42
43 def test_ok_and_next(self):
44 cur = self.connect(client_flag=CLIENT.MULTI_STATEMENTS).cursor()
45 cur.execute("SELECT 1; commit; SELECT 2;")
46 self.assertEqual([(1,)], list(cur))
47 self.assertTrue(cur.nextset())
48 self.assertTrue(cur.nextset())
49 self.assertEqual([(2,)], list(cur))
50 self.assertFalse(bool(cur.nextset()))
51
52 @pytest.mark.xfail
53 def test_multi_cursor(self):
54 con = self.connect(client_flag=CLIENT.MULTI_STATEMENTS)
55 cur1 = con.cursor()
56 cur2 = con.cursor()
57
58 cur1.execute("SELECT 1; SELECT 2;")
59 cur2.execute("SELECT 42")
60
61 self.assertEqual([(1,)], list(cur1))
62 self.assertEqual([(42,)], list(cur2))
63
64 r = cur1.nextset()
65 self.assertTrue(r)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected