2 minutes
Databases MySQL: Python Part 2
Introduction
In previous post we saw how to use SQLAlchemy and execute SQL commands to operate our database.
Now we will see that there is a more convenient way to operate in Python using the SQLAlchemy
In case you have reset your environment, we can start installing the package
!!pip3 install sqlalchemy
['Requirement already satisfied: sqlalchemy in /home/luis/.local/lib/python3.8/site-packages (1.3.20)']
And before using the library, we need to import it
import sqlalchemy as db
# and for visualisation
import pandas as pd
Connecting to the database
database = db.create_engine('mysql+pymysql://user:password@localhost/datab')
Creating a table
from sqlalchemy import Table, Column, Integer, String
metadata = db.MetaData()
pets_table = Table(
"Pets",
metadata,
Column('PetID', Integer, primary_key=True, autoincrement=True),
Column('Name', String(50)),
Column('Category', String(50))
)
metadata.create_all(database)
Adding entries
from sqlalchemy import insert
def add_pet(name, category):
statement = insert(pets_table).values(Name=name, Category=category)
with database.connect() as connection:
connection.execute(statement)
add_pet('Luna', 'Dog')
add_pet('Silvester', 'Cat')
add_pet('Twetee', 'Bird')
Read data
from sqlalchemy import select
def get_pets():
stmt = select([pets_table])
with database.connect() as connection:
results = connection.execute(stmt)
return results.fetchall()
get_pets()
[(1, 'Luna', 'Dog'), (2, 'Silvester', 'Cat'), (3, 'Twetee', 'Bird')]
Delete an entry
from sqlalchemy import delete
def delete_pet(id):
stmt = delete(pets_table).where(pets_table.c.PetID == id)
with database.connect() as connection:
connection.execute(stmt)
delete_pet(1)
get_pets()
[(2, 'Silvester', 'Cat'), (3, 'Twetee', 'Bird')]
Delete a table
with database.connect() as connection:
results = connection.execute("SHOW TABLES")
display(pd.DataFrame(results.fetchall()))
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
pets_table.drop(database)
with database.connect() as connection:
results = connection.execute("SHOW TABLES")
display(pd.DataFrame(results.fetchall()))
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
We see an empty dataframe, and therefore we have deleted the only table in our database
This method of accesing data is more pythonic
, and we can build classes and reusable functions easily.