115 lines
2.9 KiB
Python
115 lines
2.9 KiB
Python
import os
|
|
|
|
from dotenv import load_dotenv
|
|
from mysql.connector import Error, connect, errorcode
|
|
|
|
load_dotenv()
|
|
|
|
db_host = os.environ.get("DB_HOST")
|
|
db_user = os.environ.get("DB_USER")
|
|
db_password = os.environ.get("DB_PASSWORD")
|
|
db_name = os.environ.get("DB_NAME")
|
|
|
|
try:
|
|
connection = connect(
|
|
host= db_host,
|
|
user= db_user,
|
|
password= db_password,
|
|
database= db_name
|
|
)
|
|
|
|
cursor = connection.cursor()
|
|
### Exemple 1 : commande
|
|
# cursor.execute("SELECT * FROM employee LIMIT 5")
|
|
# results = cursor.fetchone()
|
|
# print(results)
|
|
|
|
# ### Exemple 2 : requête complète comme variable
|
|
# query = """
|
|
# CREATE TABLE IF NOT EXISTS movies (
|
|
# id INT AUTO_INCREMENT PRIMARY KEY,
|
|
# title VARCHAR(100),
|
|
# release_year YEAR(4),
|
|
# genre VARCHAR(100),
|
|
# collection_in_mil DECIMAL(4,1)
|
|
# )
|
|
# """
|
|
# cursor.execute(query)
|
|
# # CIUD : Create, Insert, Update, Delete => Commit
|
|
# connection.commit()
|
|
|
|
### Exemple 3 : multiple requête
|
|
insert_query = """
|
|
INSERT INTO movies (title, release_year, genre, collection_in_mil)
|
|
VALUES
|
|
("Forrest Gump", 1994, "Drama", 330.2),
|
|
("INception", 2010, "Aventure", 293.7),
|
|
("Titanic", 1995, "Drama", 530.4)
|
|
"""
|
|
|
|
create_query = """
|
|
CREATE TABLE IF NOT EXISTS reviewers (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
firstname VARCHAR(100),
|
|
lastname VARCHAR(100)
|
|
)
|
|
"""
|
|
|
|
insert_query_2 = """
|
|
INSERT INTO reviewers (firstname, lastname)
|
|
VALUES (%s, %s)
|
|
"""
|
|
|
|
reviewers = [
|
|
("Jean", "FAIBLE"),
|
|
("Alain", "TERIEUR"),
|
|
("Tabatha", "CLOISON"),
|
|
("Ahmed", "BIEN")
|
|
]
|
|
|
|
cursor.execute(insert_query)
|
|
cursor.execute(create_query)
|
|
cursor.executemany(insert_query_2, reviewers)
|
|
connection.commit()
|
|
|
|
cursor.execute("SELECT * FROM movies")
|
|
# lire un par un
|
|
resultat = cursor.fetchone()
|
|
print(resultat)
|
|
while resultat is not None:
|
|
print(resultat)
|
|
resultat = cursor.fetchone()
|
|
|
|
# utilisation de lot
|
|
cursor.execute("SELECT * FROM movies")
|
|
batch = cursor.fetchmany(size= 4)
|
|
while batch:
|
|
print("----")
|
|
for row in batch:
|
|
print(row)
|
|
batch = cursor.fetchmany(4)
|
|
|
|
# Out of Memory
|
|
|
|
insert_movies_query = """
|
|
INSERT INTO movies (title, release_year, genre, collection_in_mil)
|
|
VALUES (%s, %s, %s, %s)
|
|
"""
|
|
|
|
with open("movies.csv", "r") as fichier:
|
|
reader = csv.reader(fichier)
|
|
next(reader)
|
|
|
|
except Error as error:
|
|
match error.errno:
|
|
case errorcode.ER_ACCESS_DENIED_ERROR:
|
|
print("Accès refusé. Vérifier USER et PASSWORD")
|
|
case errorcode.ER_BAD_DB_ERROR:
|
|
print("BDD n'existe pas")
|
|
case _:
|
|
print(f"Erreur {error}")
|
|
finally:
|
|
if cursor is not None:
|
|
cursor.close()
|
|
if connection is not None and connection.is_connected():
|
|
connection.close() |