sqlmodel/docs_src/tutorial/select/annotations/en/tutorial002.md
2021-08-24 14:51:14 +02:00

2.1 KiB

  1. Import from sqlmodel everything we will use, including the new select() function.

  2. Create the Hero class model, representing the hero table.

  3. Create the engine, we should use a single one shared by all the application code, and that's what we are doing here.

  4. Create all the tables for the models registered in SQLModel.metadata.

    This also creates the database if it doesn't exist already.

  5. Create each one of the Hero objects.

    You might not have this in your version if you had already created the data in the database.

  6. Create a new session and use it to add the heroes to the database, and then commit the changes.

  7. 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.
    
  8. Use the select() function to create a statement selecting all the Hero objects.

    This selects all the rows in the hero table.

  9. 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] ()
    
  10. Iterate for each Hero object in the results.

  11. Print each hero.

    The 3 iterations in the for loop 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'
    
  12. At this point, after the with block, the session is closed.

    This generates the output:

    INFO Engine ROLLBACK
    
  13. Add this function select_heroes() to the main() function so that it is called when we run this program from the command line.