Fonctions de connexion et d'opération de la base de données
Des fonctions utilitaires géreront les connexions à la base de données, les validations d'URL, la mise à jour des compteurs de navigateur et de plateforme, et la génération de jetons aléatoires pour les URL raccourcies.
Connexion à la base de données
Tout d'abord, vous configurerez la connexion à la base de données en utilisant pymysql
. Cela est crucial pour permettre à votre application Flask d'interagir avec la base de données MySQL.
Dans utils.py
, ajoutez le code Python suivant :
from urllib.parse import urlparse
import random
import string
import pymysql
db_config = {
"host": "localhost",
"user": "root",
"password": "",
"db": "SHORTY"
}
def get_db_connection() -> pymysql.Connection:
"""Crée et renvoie une nouvelle connexion à la base de données."""
return pymysql.connect(**db_config)
- La bibliothèque
pymysql
est utilisée pour se connecter à la base de données MySQL. Cette bibliothèque permet aux applications Python d'interagir avec les bases de données MySQL en utilisant une API simple.
- Le dictionnaire
db_config
contient les paramètres de connexion à la base de données tels que l'hôte, l'utilisateur, le mot de passe et le nom de la base de données. Ces paramètres sont importés à partir d'un module config
séparé, probablement pour une meilleure sécurité et modularité. En gardant les paramètres de configuration séparés, il est plus facile d'effectuer des ajustements sans modifier la base du code principal.
- La fonction
get_db_connection()
crée et renvoie une nouvelle connexion à la base de données en utilisant la fonction pymysql.connect(**db_config)
. La syntaxe **db_config
est utilisée pour déballer le dictionnaire en arguments clés.
Fonctions d'opération de la base de données
Après avoir établi une connexion à la base de données, l'étape suivante consiste à créer des fonctions qui effectuent des opérations sur la base de données. Cela inclut la liste des données pour une URL raccourcie donnée et la mise à jour des compteurs en fonction de l'utilisation des navigateurs et des plateformes.
Dans utils.py
, ajoutez le code Python suivant :
def list_data(shorty_url: str) -> tuple:
"""
Prend une URL raccourcie en entrée.
Renvoie le compteur, le navigateur, les statistiques de plateforme.
"""
with get_db_connection() as conn, conn.cursor() as cursor:
su = [shorty_url]
info_sql = "SELECT URL, S_URL, TAG FROM WEB_URL WHERE S_URL = %s; "
counter_sql = "SELECT COUNTER FROM WEB_URL WHERE S_URL = %s; "
browser_sql = "SELECT CHROME, FIREFOX, SAFARI, OTHER_BROWSER FROM WEB_URL WHERE S_URL = %s;"
platform_sql = "SELECT ANDROID, IOS, WINDOWS, LINUX, MAC, OTHER_PLATFORM FROM WEB_URL WHERE S_URL = %s;"
cursor.execute(info_sql, su)
info_fetch = cursor.fetchone()
cursor.execute(counter_sql, su)
counter_fetch = cursor.fetchone()
cursor.execute(browser_sql, su)
browser_fetch = cursor.fetchone()
cursor.execute(platform_sql, su)
platform_fetch = cursor.fetchone()
return info_fetch, counter_fetch, browser_fetch, platform_fetch
def update_counters(cursor: pymysql.Connection, short_url: str, browser_dict: dict, platform_dict: dict) -> None:
"""Met à jour les compteurs de navigateur et de plateforme dans la base de données pour l'URL raccourcie donnée."""
counter_sql = """UPDATE WEB_URL SET COUNTER = COUNTER + 1,
CHROME = CHROME + %s, FIREFOX = FIREFOX + %s, SAFARI = SAFARI + %s, OTHER_BROWSER = OTHER_BROWSER + %s,
ANDROID = ANDROID + %s, IOS = IOS + %s, WINDOWS = WINDOWS + %s, LINUX = LINUX + %s, MAC = MAC + %s, OTHER_PLATFORM = OTHER_PLATFORM + %s
WHERE S_URL = %s;"""
cursor.execute(counter_sql, (browser_dict['chrome'], browser_dict['firefox'], browser_dict['safari'], browser_dict['other'],
platform_dict['android'], platform_dict['iphone'], platform_dict[
'windows'], platform_dict['linux'], platform_dict['macos'], platform_dict['other'],
short_url))
- La fonction
list_data(shorty_url)
est conçue pour récupérer diverses informations de la table WEB_URL
pour une URL raccourcie donnée (shorty_url
). Elle établit une connexion à la base de données et exécute quatre requêtes SQL pour extraire l'URL d'origine, l'étiquette associée, le compteur d'accès, les statistiques de navigateur et de plateforme. Chaque requête est exécutée séparément, et les résultats sont extraits et renvoyés.
- La fonction
update_counters(cursor, short_url, browser_dict, platform_dict)
met à jour le compteur d'accès, les statistiques de navigateur et de plateforme pour une URL raccourcie donnée dans la base de données. Cette fonction prend un curseur de base de données, l'URL raccourcie et deux dictionnaires contenant les comptes pour chaque navigateur et chaque plateforme en arguments. Elle construit une instruction SQL UPDATE
pour incrémenter les compteurs pour l'URL raccourcie en fonction des données fournies. La fonction suppose que les informations sur le navigateur et la plateforme ont été déterminées avant d'appeler cette fonction, et que ces informations sont passées en tant que dictionnaires (browser_dict
et platform_dict
), avec des clés correspondant aux colonnes de la table WEB_URL
.
Ceci est un modèle typique pour les applications web utilisant Flask et MySQL, où des fonctions utilitaires sont définies pour les opérations de base de données courantes. Ces fonctions peuvent ensuite être importées et utilisées dans toute l'application pour interagir avec la base de données, en isolant l'accès direct à la base de données et les requêtes SQL de la logique principale de l'application.