Ich werde darüber schreiben, wie man mit einem Datenanalysetool wie jupyter eine Verbindung zu rds herstellt und einen Datenrahmen erhält.
Wenn Sie Daten aus einer Datenbank abrufen und analysieren möchten
Ich denke, dass es oft dem Prozess folgt.
jedoch
Unter solchen Umständen wird der vorherige Vorgang viele Male wiederholt. Infolgedessen kann der Mitarbeiter wiederholt zwischen der Datenbank und der Analyseumgebung wechseln oder Kommunikationskosten zwischen dem Ingenieur, der die Daten aufbereitet, und dem Datenwissenschaftler, der sie analysiert, verursachen.
Daher dachte ich, dass die Kosten reduziert werden könnten, wenn die Analyseumgebung so wie sie ist mit der Datenbank verbunden wird.
Ich verwende Python häufig für die Datenanalyse, aber dieses Mal habe ich versucht, mit dem MySQL-Client [mysqlclient] von Python (https://github.com/PyMySQL/mysqlclient-python) eine Verbindung zur Datenbank herzustellen. (Mysqlclient ist der empfohlene Treiber für Pythons Webframework Django)
import MySQLdb
connect = MySQLdb.connect(
host='rds Endpunkt',
user='Nutzername',
db='Name der Datenbank',
passwd='Passwort'
)
cursor = connect.cursor()
sql = "Schreiben Sie eine SQL-Anweisung, z. B. select als Zeichenfolge"
cursor.execute(sql)
for row in cursor.fetchall():
print(row)
cursor.close()
connect.close()
Das Ergebnis wird als Taple zurückgegeben. Stellen Sie sicher, dass Sie der SQL-Spezifikation ein Limit hinzufügen, da der Prozess nicht beendet wird, wenn die Tabelle groß ist.
Wenn Sie einen Stufenserver haben, verwenden Sie die Bibliothek sshtunnel, um einen SSH-Tunnel mit mysqlclient zu graben.
import MySQLdb
from sshtunnel import SSHTunnelForwarder
with SSHTunnelForwarder(
('IP-Adresse des Plattformservers',Schritt Server Portnummer),
ssh_host_key=None,
ssh_username='Benutzername für den Zugriff auf den Plattformserver',
ssh_password=None,
ssh_pkey='ssh Geben Sie den Pfad des privaten Schlüssels an',
remote_bind_address=('rds Endpunkt',rds Portnummer),
local_bind_address=('lokaler Gastgeber',Beliebige Portnummer)
) as tunnel:
connect = MySQLdb.connect(
host='lokaler Gastgeber',
port=Lokal ein_bind_Beliebige Portnummer bestimmt durch Adresse,
user='Nutzername',
db='Name der Datenbank',
passwd='Passwort'
)
cursor = connect.cursor()
sql = "Schreiben Sie eine SQL-Anweisung, z. B. select als Zeichenfolge"
cursor.execute(sql)
for row in cursor.fetchall():
print(row)
cursor.close()
connect.close()
Das Ergebnis wird auch als Taple zurückgegeben.
――Ich möchte verschiedene Datenrahmen ausprobieren
Wir konnten diese Anforderungen erfüllen und ein Umfeld schaffen, in dem Analysten schnell die gewünschten Daten erhalten können.
Da Variablen auf der Python-Seite angegeben werden können, bestand ein sekundärer Vorteil darin, dass Ausdrücke flexibel verarbeitet werden können, z. B. das Erweitern von Ausdrücken auf die Zeichenfolge, die SQL angibt.
Recommended Posts