@@ -587,5 +587,37 @@ async def test_queries_with_expose_backend_connection(database_url):
587587 assert result [1 ] == "example1"
588588 assert result [2 ] == True
589589
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