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.
Lorsque vous souhaitez extraire des données d'une base de données et les analyser
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.
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)
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.
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.
――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