Introduction to relational databases Importing Data in Python - - PowerPoint PPT Presentation

introduction to relational databases
SMART_READER_LITE
LIVE PREVIEW

Introduction to relational databases Importing Data in Python - - PowerPoint PPT Presentation

IMPORTING DATA IN PYTHON Introduction to relational databases Importing Data in Python What is a relational database? Based on relational model of data First described by Edgar Ted Codd Importing Data in Python Example:


slide-1
SLIDE 1

IMPORTING DATA IN PYTHON

Introduction to relational databases

slide-2
SLIDE 2

Importing Data in Python

What is a relational database?

  • Based on relational model of data
  • First described by Edgar “Ted” Codd
slide-3
SLIDE 3

Importing Data in Python

Example: Northwind database

  • Orders table
  • Customers table
  • Employees table
slide-4
SLIDE 4

Importing Data in Python

The Orders table

slide-5
SLIDE 5

Importing Data in Python

Tables are linked

  • Orders table
  • Customers table
  • Employees table
slide-6
SLIDE 6

Importing Data in Python

Relational model

  • Widely adopted
  • Todd’s 12 Rules/Commandments
  • Consists of 13 rules (zero-indexed!)
  • Describes what a Relational Database Management

System should adhere to to be considered relational

slide-7
SLIDE 7

Importing Data in Python

Relational Database Management Systems

  • PostgreSQL
  • MySQL
  • SQLite
  • SQL = Structured Query Language
slide-8
SLIDE 8

IMPORTING DATA IN PYTHON

Let’s practice!

slide-9
SLIDE 9

IMPORTING DATA IN PYTHON

Creating a database engine in Python

slide-10
SLIDE 10

Importing Data in Python

Creating a database engine

In [1]: from sqlalchemy import create_engine In [2]: engine = create_engine('sqlite:///Northwind.sqlite')

  • SQLite database
  • Fast and simple
  • SQLAlchemy
  • Works with many Relational

Database Management Systems

slide-11
SLIDE 11

Importing Data in Python

Geing table names

In [3]: table_names = engine.table_names() In [4]: print(table_names) ['Categories', 'Customers', 'EmployeeTerritories', 'Employees', 'Order Details', 'Orders', 'Products', 'Region', 'Shippers', 'Suppliers', 'Territories'] In [1]: from sqlalchemy import create_engine In [2]: engine = create_engine('sqlite:///Northwind.sqlite')

slide-12
SLIDE 12

IMPORTING DATA IN PYTHON

Let’s practice!

slide-13
SLIDE 13

IMPORTING DATA IN PYTHON

Querying relational databases in Python

slide-14
SLIDE 14

Importing Data in Python

Basic SQL query

SELECT * FROM Table_Name

  • Returns all columns of all rows of the table
  • Example:
  • We’ll use SQLAlchemy and pandas

SELECT * FROM Orders

slide-15
SLIDE 15

Importing Data in Python

Workflow of SQL querying

  • Import packages and functions
  • Create the database engine
  • Connect to the engine
  • Query the database
  • Save query results to a DataFrame
  • Close the connection
slide-16
SLIDE 16

Importing Data in Python

Your first SQL query

In [1]: from sqlalchemy import create_engine In [2]: import pandas as pd In [3]: engine = create_engine('sqlite:///Northwind.sqlite') In [4]: con = engine.connect() In [5]: rs = con.execute("SELECT * FROM Orders") In [6]: df = pd.DataFrame(rs.fetchall()) In [7]: con.close()

slide-17
SLIDE 17

Importing Data in Python

Printing your query results

In [8]: print(df.head()) 0 1 2 3 4 0 10248 VINET 5 7/4/1996 12:00:00 AM 8/1/1996 12:00:00 AM 1 10251 VICTE 3 7/8/1996 12:00:00 AM 8/5/1996 12:00:00 AM 2 10254 CHOPS 5 7/11/1996 12:00:00 AM 8/8/1996 12:00:00 AM 3 10256 WELLI 3 7/15/1996 12:00:00 AM 8/12/1996 12:00:00 AM 4 10258 ERNSH 1 7/17/1996 12:00:00 AM 8/14/1996 12:00:00 AM

slide-18
SLIDE 18

Importing Data in Python

Set the DataFrame column names

In [1]: from sqlalchemy import create_engine In [2]: import pandas as pd In [3]: engine = create_engine('sqlite:///Northwind.sqlite') In [4]: con = engine.connect() In [5]: rs = con.execute("SELECT * FROM Orders") In [6]: df = pd.DataFrame(rs.fetchall()) In [7]: df.columns = rs.keys() In [8]: con.close()

slide-19
SLIDE 19

Importing Data in Python

In [9]: print(df.head()) OrderID CustomerID EmployeeID OrderDate 0 10248 VINET 5 7/4/1996 12:00:00 AM 1 10251 VICTE 3 7/8/1996 12:00:00 AM 2 10254 CHOPS 5 7/11/1996 12:00:00 AM 3 10256 WELLI 3 7/15/1996 12:00:00 AM 4 10258 ERNSH 1 7/17/1996 12:00:00 AM

Set the data frame column names

slide-20
SLIDE 20

Importing Data in Python

Using the context manager

In [1]: from sqlalchemy import create_engine In [2]: import pandas as pd In [3]: engine = create_engine('sqlite:///Northwind.sqlite') In [4]: with engine.connect() as con: ...: rs = con.execute("SELECT OrderID, OrderDate, ShipName FROM Orders") ...: df = pd.DataFrame(rs.fetchmany(size=5)) ...: df.columns = rs.keys()

slide-21
SLIDE 21

IMPORTING DATA IN PYTHON

Let’s practice!

slide-22
SLIDE 22

IMPORTING DATA IN PYTHON

Querying relational databases directly with pandas

slide-23
SLIDE 23

Importing Data in Python

The pandas way to query

In [1]: from sqlalchemy import create_engine In [2]: import pandas as pd In [3]: engine = create_engine('sqlite:///Northwind.sqlite') In [4]: with engine.connect() as con: ...: rs = con.execute("SELECT * FROM Orders") ...: df = pd.DataFrame(rs.fetchall()) ...: df.columns = rs.keys() In [5]: df = pd.read_sql_query("SELECT * FROM Orders", engine)

slide-24
SLIDE 24

IMPORTING DATA IN PYTHON

Let’s practice!

slide-25
SLIDE 25

IMPORTING DATA IN PYTHON

Advanced querying: exploiting table relationships

slide-26
SLIDE 26

Importing Data in Python

Tables are linked

  • Customers table
  • Employees table
  • Orders table
slide-27
SLIDE 27

Importing Data in Python

  • Customers table
  • Orders table

JOINing tables

slide-28
SLIDE 28

Importing Data in Python

In [1]: from sqlalchemy import create_engine In [2]: import pandas as pd In [3]: engine = create_engine('sqlite:///Northwind.sqlite') In [4]: df = pd.read_sql_query("SELECT OrderID, CompanyName FROM Orders INNER JOIN Customers on Orders.CustomerID = Customers.CustomerID", engine) In [5]: print(df.head()) OrderID CompanyName 0 10248 Vins et alcools Chevalier 1 10251 Victuailles en stock 2 10254 Chop-suey Chinese 3 10256 Wellington Importadora 4 10258 Ernst Handel

INNER JOIN in Python (pandas)

slide-29
SLIDE 29

IMPORTING DATA IN PYTHON

Let’s practice!

slide-30
SLIDE 30

IMPORTING DATA IN PYTHON

Final Thoughts

slide-31
SLIDE 31

Importing Data in Python

  • Relational databases
  • Queries
  • SELECT
  • WHERE
  • JOIN

What you’ve learned:

slide-32
SLIDE 32

IMPORTING DATA IN PYTHON

Congratulations!