2.1 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	- 
Import from
sqlmodeleverything we will use, including the newselect()function. - 
Create the
Heroclass model, representing theherotable. - 
Create the engine, we should use a single one shared by all the application code, and that's what we are doing here.
 - 
Create all the tables for the models registered in
SQLModel.metadata.This also creates the database if it doesn't exist already.
 - 
Create each one of the
Heroobjects.You might not have this in your version if you had already created the data in the database.
 - 
Create a new session and use it to
addthe heroes to the database, and thencommitthe changes. - 
Create a new session to query data.
!!! tip Notice that this is a new session independent from the one in the other function above.
But it still uses the same **engine**. We still have one engine for the whole application. - 
Use the
select()function to create a statement selecting all theHeroobjects.This selects all the rows in the
herotable. - 
Use
session.exec(statement)to make the session use the engine to execute the internal SQL statement.This will go to the database, execute that SQL, and get the results back.
It returns a special iterable object that we put in the variable
results.This generates the output:
INFO Engine BEGIN (implicit) INFO Engine SELECT hero.id, hero.name, hero.secret_name, hero.age FROM hero INFO Engine [no key 0.00032s] () - 
Iterate for each
Heroobject in theresults. - 
Print each
hero.The 3 iterations in the
forloop will generate this output:id=1 name='Deadpond' age=None secret_name='Dive Wilson' id=2 name='Spider-Boy' age=None secret_name='Pedro Parqueador' id=3 name='Rusty-Man' age=48 secret_name='Tommy Sharp' - 
At this point, after the
withblock, the session is closed.This generates the output:
INFO Engine ROLLBACK - 
Add this function
select_heroes()to themain()function so that it is called when we run this program from the command line.