0% found this document useful (0 votes)
34 views

Importing Data in Python I: Introduction To Relational Databases

The document discusses importing data from relational databases into Python. It introduces relational databases and provides an example using the Northwind database. It then demonstrates how to create a database engine in Python using SQLite and SQLAlchemy. It shows how to query the database using SQL and pandas, including performing inner joins to link tables. The document concludes by recapping what was covered and discussing next steps of web scraping and interacting with APIs.

Uploaded by

NourheneMbarek
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views

Importing Data in Python I: Introduction To Relational Databases

The document discusses importing data from relational databases into Python. It introduces relational databases and provides an example using the Northwind database. It then demonstrates how to create a database engine in Python using SQLite and SQLAlchemy. It shows how to query the database using SQL and pandas, including performing inner joins to link tables. The document concludes by recapping what was covered and discussing next steps of web scraping and interacting with APIs.

Uploaded by

NourheneMbarek
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

IMPORTING DATA IN PYTHON I

Introduction to
relational
databases
Importing Data in Python I

What is a relational database?


● Based on relational model of data
● First described by Edgar “Ted” Codd
Importing Data in Python I

Example: Northwind database


● Orders table

● Employees table

● Customers table
Importing Data in Python I

The Orders table


Importing Data in Python I

Tables are linked


● Orders table

● Employees table

● Customers table
Importing Data in Python I

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
Importing Data in Python I

Relational Database Management Systems


● PostgreSQL
● MySQL
● SQLite
● SQL = Structured Query Language
IMPORTING DATA IN PYTHON I

Let’s practice!
IMPORTING DATA IN PYTHON I

Creating a
database engine
in Python
Importing Data in Python I

Creating a database engine


● SQLite database
● Fast and simple
● SQLAlchemy
● Works with many Relational
Database Management Systems

In [1]: from sqlalchemy import create_engine

In [2]: engine = create_engine('sqlite:///Northwind.sqlite')


Importing Data in Python I

Ge!ing table names


In [1]: from sqlalchemy import create_engine

In [2]: engine = create_engine('sqlite:///Northwind.sqlite')

In [3]: table_names = engine.table_names()

In [4]: print(table_names)
['Categories', 'Customers', 'EmployeeTerritories',
'Employees', 'Order Details', 'Orders', 'Products',
'Region', 'Shippers', 'Suppliers', 'Territories']
IMPORTING DATA IN PYTHON I

Let’s practice!
IMPORTING DATA IN PYTHON I

Querying relational
databases in Python
Importing Data in Python I

Basic SQL query


SELECT * FROM Table_Name

● Returns all columns of all rows of the table


● Example:

SELECT * FROM Orders

● We’ll use SQLAlchemy and pandas


Importing Data in Python I

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
Importing Data in Python I

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()
Importing Data in Python I

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
Importing Data in Python I

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()
Importing Data in Python I

Set the data frame column names


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
Importing Data in Python I

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()
IMPORTING DATA IN PYTHON I

Let’s practice!
IMPORTING DATA IN PYTHON I

Querying relational
databases directly
with pandas
Importing Data in Python I

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)


IMPORTING DATA IN PYTHON I

Let’s practice!
IMPORTING DATA IN PYTHON I

Advanced querying:
exploiting table
relationships
Importing Data in Python I

Tables are linked


● Orders table

● Employees table

● Customers table
Importing Data in Python I

JOINing tables
● Orders table

● Customers table
Importing Data in Python I

INNER JOIN in Python (pandas)


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
IMPORTING DATA IN PYTHON I

Let’s practice!
IMPORTING DATA IN PYTHON I

Final Thoughts
Importing Data in Python I

What you’ve learned:


● Relational databases
● Queries
● SELECT
● WHERE
● JOIN
Importing Data in Python I

Next course:
● Scrape data from the web
● Interact with APIs
IMPORTING DATA IN PYTHON

Congratulations!

You might also like