@@ -587,5 +587,37 @@ async def test_queries_with_expose_backend_connection(database_url):
587
587
assert result [1 ] == "example1"
588
588
assert result [2 ] == True
589
589
590
- # TODO unittests at the connection level
591
- # TODO (?) Double-check connections are released back to the pool
590
+
591
+ @pytest .mark .parametrize ("database_url" , DATABASE_URLS )
592
+ @async_adapter
593
+ async def test_queries_with_sqlalchemy_test (database_url ):
594
+ """
595
+ Test for inserting and retriving the data using the `sqlalchemy.text` query object.
596
+ """
597
+ async with Database (database_url ) as database :
598
+ async with database .transaction (force_rollback = True ):
599
+ # Insert query
600
+ insert_query = "INSERT INTO notes (text, completed) VALUES (:text, :completed)"
601
+
602
+ # execute_many()
603
+ query = sqlalchemy .text (insert_query )
604
+ values = [("example1" , True ), ("example2" , False ), ("example3" , True )]
605
+ for text , completed in values :
606
+ current_query = query .bindparams (text = text , completed = completed )
607
+ await database .execute (current_query )
608
+
609
+ # Select query
610
+ select_query = "SELECT notes.id, notes.text, notes.completed FROM notes"
611
+
612
+ # fetch_all()
613
+ query = sqlalchemy .text (select_query )
614
+ results = await database .fetch_all (query )
615
+
616
+ assert len (results ) == 3
617
+ # Raw output for the raw request
618
+ assert results [0 ][1 ] == "example1"
619
+ assert results [0 ][2 ] == True
620
+ assert results [1 ][1 ] == "example2"
621
+ assert results [1 ][2 ] == False
622
+ assert results [2 ][1 ] == "example3"
623
+ assert results [2 ][2 ] == True
0 commit comments