[PYTHON] Préparez un environnement d'analyse haute vitesse en accédant à mysql depuis l'environnement d'analyse de données

J'écrirai sur la façon de se connecter à rds à partir d'un outil d'analyse de données tel que jupyter et d'obtenir une trame de données.

motivation

Lorsque vous souhaitez extraire des données d'une base de données et les analyser

  1. Créez le jeu de résultats que vous souhaitez saisir SQL
  2. Supprimez CSV sur l'ensemble de résultats
  3. Mettez CSV dans l'environnement d'analyse
  4. Lire CSV et créer une trame de données
  5. Avec la trame de données à portée de main, prêt à partir

Je pense que cela suit souvent le processus.

pourtant

--Si vous souhaitez essayer différentes trames de données --Lorsque la trame de données souhaitée change en fonction de la situation ――Si vous voulez toujours des données fraîches

Dans de telles circonstances, le processus précédent sera répété plusieurs fois. En conséquence, le travailleur peut sauter à plusieurs reprises entre la base de données et l'environnement d'analyse, ou il peut y avoir un coût de communication raisonnable entre l'ingénieur qui prépare les données et le data scientist qui les analyse.

Par conséquent, j'ai pensé que le coût pourrait être réduit en connectant l'environnement d'analyse à la base de données tel quel.

Qu'est-il arrivé

J'utilise souvent Python pour l'analyse des données, mais cette fois j'ai essayé de me connecter à la base de données en utilisant le client MySQL de Python mysqlclient. (Mysqlclient est le pilote recommandé pour le framework web de Python Django)

Sans serveur pas à pas

import MySQLdb

connect = MySQLdb.connect(
    host='point de terminaison rds',
    user='Nom d'utilisateur',
    db='Nom de la base de données',
    passwd='mot de passe'
)

cursor = connect.cursor()
sql = "Ecrire une instruction SQL telle que select sous forme de chaîne"
cursor.execute(sql)
for row in cursor.fetchall():
    print(row)
cursor.close()
connect.close()

Le résultat sera renvoyé sous forme de taple. Assurez-vous d'ajouter une limite à la spécification sql car le processus ne se terminera pas si la table est volumineuse.

S'il y a un serveur pas à pas

Si vous avez un serveur step, utilisez la bibliothèque sshtunnel pour creuser un tunnel ssh avec mysqlclient.

import MySQLdb
from sshtunnel import SSHTunnelForwarder

with SSHTunnelForwarder(
    ('Adresse IP du serveur de la plateforme',Numéro de port du serveur Step),
    ssh_host_key=None,
    ssh_username='Nom d'utilisateur pour accéder au serveur de la plateforme',
    ssh_password=None,
    ssh_pkey='ssh Spécifiez le chemin de la clé privée',
    remote_bind_address=('point de terminaison rds',numéro de port rds),
    local_bind_address=('hôte local',Tout numéro de port)
) as tunnel:
    connect = MySQLdb.connect(
        host='hôte local',
        port=Local sur_bind_Numéro de port arbitraire déterminé par l'adresse,
        user='Nom d'utilisateur',
        db='Nom de la base de données',
        passwd='mot de passe'
    )
    cursor = connect.cursor()
    sql = "Ecrire une instruction SQL telle que select sous forme de chaîne"
    cursor.execute(sql)
    for row in cursor.fetchall():
        print(row)
    cursor.close()
    connect.close()

Le résultat sera également renvoyé sous forme de taple.

Résumé

――Je veux essayer différentes trames de données

Nous avons pu répondre à ces demandes et fournir un environnement dans lequel les analystes peuvent obtenir rapidement les données qu'ils souhaitent.

De plus, étant donné que les variables peuvent être spécifiées du côté python, il y avait un avantage secondaire de pouvoir gérer de manière flexible des expressions telles que l'extension des expressions à la chaîne de caractères qui spécifie sql.

Recommended Posts

Préparez un environnement d'analyse haute vitesse en accédant à mysql depuis l'environnement d'analyse de données
Le premier débutant en programmation à essayer une analyse de données simple avec programmation
Histoire de l'analyse de données par apprentissage automatique
Prédire les cours des actions par une analyse Big Data à partir des données passées
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Créez un environnement d'analyse de données avec Kedro + MLflow + Github Actions
Créer un bloc de données à partir des données textuelles de course de bateaux acquises
Créer un environnement d'analyse de données python sur Mac (El Capitan)
Créer un environnement Python et transférer des données vers le serveur
Gzip compresser les données en streaming
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
Recherche par image de la pellicule en utilisant Pythonista3
[Connu de façon inattendue? ] Présentation d'une vraie journée dans le département d'analyse des données
Effectuer une analyse morphologique dans l'environnement d'apprentissage automatique lancé par GCE
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Préparez un environnement de test de charge distribué avec l'outil de test de charge Python Locust
[Mac] Créer un environnement d'exécution Python 3 à partir de l'état entièrement initialisé
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
Première analyse de données satellitaires par Tellus
Préparez l'environnement de développement avec anyenv
Préparer l'environnement pour Atom pour Pythonista
Jouons avec le jeu de données d'analyse d'entreprise "CoARiJ" créé par TIS ①
Extraire et tracer les dernières données démographiques à partir des données PDF fournies par la ville
[Environnement de développement] Comment créer un ensemble de données proche de la base de données de production
Jouons avec le jeu de données d'analyse d'entreprise "CoARiJ" créé par TIS ②
(Version préservée: mise à jour de temps en temps) Une collection de tutoriels utiles pour les hackathons d'analyse de données par Team AI