Slide 1

Slide 1 text

Let's Build an ORM! Greg Back PyTennessee 2019

Slide 2

Slide 2 text

$ whoami Sr Software Developer at /gtback @gtback

Slide 3

Slide 3 text

Giving a talk 1. Think of a topic 2. Submit Proposal 3. Proposal accepted 4. Panic 5. Write talk

Slide 4

Slide 4 text

Object Relational Mapper

Slide 5

Slide 5 text

Object Relational Mapper

Slide 6

Slide 6 text

Object Relational Mapper

Slide 7

Slide 7 text

Object Relational Mapper

Slide 8

Slide 8 text

https://www.jetbrains.com/research/python-developers-survey-2018/ JetBrains Python Developers Survey 2018 Results

Slide 9

Slide 9 text

(Potential) Responsibilities of an ORM ● create database ● define tables ● define fields ○ size/length ○ nullable ○ default values ● define foreign keys ● define indices ● define relationships ○ one-to-many ○ many-to-many ○ one-to-one ○ inverse relationships ● define stored procedures ● class inheritence ● caching ● transactions ○ commit ○ rollback ○ nested transactions ● support sqlite ● support MySQL ● support PostgreSQL ● support Oracle ● support MS SQL Server ● prevent SQL injection ● remain performant ● support multiple clients ● use multiple databases ● error handling ● logging ● create tables ● insert data ○ convert data types ○ validate data ● retrieve data ○ support joins ○ order results ○ subqueries ○ nested queries ○ lazy loading ○ eager loading ● update data ○ by ID ○ using filters ● delete data ○ by ID ○ using filters ● cascading operations ● bulk operations

Slide 10

Slide 10 text

Responsibilities of our ORM ● create database ● define tables ● define fields ○ size/length ○ nullable ○ default values ● define foreign keys ● define indices ● define relationships ○ one-to-many ○ many-to-many ○ one-to-one ○ inverse relationships ● define stored procedures ● class inheritence ● caching ● transactions ○ commit ○ rollback ○ nested transactions ● support sqlite ● support MySQL ● support PostgreSQL ● support Oracle ● support MS SQL Server ● prevent SQL injection ● remain performant ● support multiple clients ● use multiple databases ● error handling ● logging ● create tables ● insert data ○ convert data types ○ validate data ● retrieve data ○ support joins ○ order results ○ subqueries ○ nested queries ○ lazy loading ○ eager loading ● update data ○ by ID ○ using filters ● delete data ○ by ID ○ using filters ● cascading operations ● bulk operations ● create database ● define tables ● define fields ● define foreign keys ● create tables ● insert data ● retrieve data ● support sqlite

Slide 11

Slide 11 text

Let's Do This...