[PYTHON] Die Geschichte, den Versuch aufzugeben, mit Heroku eine Verbindung zu MySQL herzustellen

Überblick

Ich wollte dem Linebot, an dem ich gerade arbeite, eine datenbankbasierte Funktion hinzufügen, also habe ich versucht, mit Heroku eine Verbindung zu MySQL herzustellen, aber es gab viele Stolpersteine. Infolgedessen habe ich aufgegeben, aber ich hoffe, dass es für Anfänger wie mich hilfreich sein wird, also werde ich es für alle Fälle zusammenfassen.

Umgebung

Was nicht in diesem Artikel zu schreiben

Verfahren

1. Installieren Sie MySQL

Installieren Sie MySQL selbst mit pip install mysql.

2. Installieren Sie den Stecker

Installieren Sie den Stecker. Um ehrlich zu sein, verstehe ich die Rolle nicht wirklich, aber wie der Name schon sagt, scheint es notwendig, eine Verbindung zum MySQL-Server herzustellen. Es gibt viele Arten von Konnektoren, abhängig vom Zweck und der verwendeten Sprache, aber ich verwende "mysqlclient". Dies wird auch mit pip install mysqlclient installiert.

3. Vorbereitung bei Heroku

In meinem Fall habe ich nach Abschluss aller später beschriebenen Vorbereitungen für MySQL den Code an Heroku gesendet, um den Vorgang zu überprüfen, aber ich habe einen MySQL-Importfehler erhalten. Es gab zwei Ursachen, aber die erste war die Beschreibung der "Anforderungen" in der Push-Datei. Ein Fehler ist aufgetreten, weil ich den MySQL-Connector hier nicht aufgelistet habe (Übrigens war ich mir zunächst nicht sicher und habe die Version von MySQL selbst aufgelistet, aber als ich sie gepusht habe, ist ein Fehler aufgetreten. Masu).

Zweitens scheint bei der Verwendung von MySQL mit Heroku ClearDB verwendet zu werden, und ein daraus erstelltes Konto ist erforderlich. Ich werde die detaillierte Registrierungsmethode weglassen, aber als Einschränkung sagen die meisten Artikel über ClearDB, dass Sie nach der Registrierung die Umgebungsvariable "CLEARDB_DATABASE_URL" kopieren, den Anfang in "mysql2" ändern und auf "DATABASE_URL" setzen müssen. Diese Operation scheint nur für Ruby notwendig zu sein.

Aus diesem Grund habe ich mich dieses Mal entschlossen, über das Konto "CLEARDB_DATABASE_URL" eine Verbindung zu MySQL herzustellen, als ClearDB mit "heroku addons: create cleardb: ignite" hinzugefügt wurde. Da es in CLEARDB_DATABASE_URL in Form von mysql: // [Benutzername]: [Passwort] @ [Hostname] / [Datenbankname]? Reconnect = true beschrieben ist,mysql --host = [Hostname] auf dem Terminal. Sie können eine Verbindung herstellen, indem Sie --user = [Benutzername] --password = [Passwort] [Datenbankname]eingeben.

4. Vorbereitung mit MySQL

Wenn ich MySQL sicher eingeben kann, erstelle ich die erforderlichen Tabellen usw., aber hier tritt ein Problem auf. Ich habe eine Abfrage auf dem Monitor eingegeben, um eine Tabelle normal zu erstellen, aber ich habe den Fehler "ERROR 2013" erhalten. Unmittelbar danach, als ich dieselbe Abfrage erneut eingab, wurde ein weiterer Fehler angezeigt, aber die Ausführung selbst wurde durchgeführt. Aus diesem Grund dachte ich, dass ich wahrscheinlich die Timeout-Systemeinstellungen ändern musste, akzeptierte aber den Befehl zum Ändern nicht. Nach vielen Recherchen kam ich zu dem Schluss, dass die Hauptursache darin bestand, dass ich migrieren musste, um die DB-Einstellungen zu ändern. Obwohl ich untersucht habe, wie Flask migriert werden kann, konnte ich es überhaupt nicht verstehen. Ursprünglich war ich nicht besonders über MySQL selbst informiert, also gab ich auf und entschied mich für postgresql, die Standard-DB von Heroku.

~~ Als ich es in der Fehlermeldung nachgeschlagen habe, schien es, dass es durch Erhöhen des Werts wie "connect_timeout" gelöst werden könnte, aber es ist keine grundlegende Lösung und es kann ohne Probleme verarbeitet werden, wenn der Root-Benutzer eingibt, also ClearDB Ich dachte, es könnte ein besonderes Problem geben. Wenn Sie sich also die ClearDB-Site genauer ansehen, ~~

~~ Es wird empfohlen, beim Bearbeiten der Datenbank MySQL Workbench, Sequel Pro für Mac OS X, Navicat usw. zu verwenden. ~~

Ich fand eine Beschreibung mit der Aufschrift ~~. Dies scheinen GUI-Tools zu sein, mit denen Sie MySQL ohne direkte Eingabe einer Abfrage betreiben können. In einem Artikel habe ich bereits jemanden gesehen, der MySQL Workbench verwendet. Deshalb habe ich mich entschlossen, dies zu versuchen. Ausführliche Informationen zu Betriebsmethoden usw. finden Sie in diesem Artikel. konnte ich die erforderliche Tabelle sicher erstellen. ~~

Als ich nach dem Üben von MySQL zum ersten Mal versuchte, MySQL als Root-Benutzer einzugeben, konnte ich das Passwort nicht finden, egal wie oft ich gesucht habe. Ich wusste, dass das ursprüngliche Kennwort in der angegebenen Datei aufgeführt war, als ich MySQL installiert habe, aber ich konnte diese Datei nicht finden, egal wie viele Schritte ich befolgt habe. Infolgedessen gelang es mir, unter Siehe diesen Artikel in MySQL einzusteigen.

Zusammenfassung

Ich habe es lange geschrieben, aber zusammenfassend

  1. Installieren Sie MySQL
  2. Installieren Sie den Stecker
  3. Registrieren Sie ClearDB bei Heroku (listen Sie die Connector-Version in den Anforderungen auf)
  4. ~~ Bearbeiten in ClearDB mit MySQL Workbench ~~ Migration?

Es wird sein.

Dieses Mal habe ich ein neues Feld namens Datenbank ausprobiert, und es war eine großartige Lernerfahrung, da ich eine andere Perspektive brauchte als das Schreiben des Codes, den ich bisher gemacht hatte. Die Beta-Basis scheint für fast alle Dienste unverzichtbar zu sein, daher möchte ich diese Gelegenheit nutzen, um solides Wissen zu erwerben und meine Fähigkeiten zu erweitern.

Referenz

Recommended Posts

Die Geschichte, den Versuch aufzugeben, mit Heroku eine Verbindung zu MySQL herzustellen
Eine Geschichte, die es aufgegeben hat, JavaScripthon unter Windows auszuführen.
Eine Geschichte über einen Anfänger, der sich bemüht, CentOS 8 einzurichten (Verfahrensnotiz)
Eine Geschichte über einen Versuch, uwsgi auf einer fehlgeschlagenen EC2-Instanz zu installieren
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Ich erhalte [Fehler 2055], wenn ich versuche, mit Heroku eine Verbindung zu MySQL herzustellen
Eine Geschichte über den Versuch, private Variablen in Python zu implementieren.
Die Geschichte der Verwendung von Python reduziert
Stellen Sie mit Flask SQL Alchemy eine Verbindung zu MySQL her
Eine Geschichte über den Versuch, mehrere Python-Versionen auszuführen (Mac Edition)
Eine Geschichte über Python Pop und Append
Scraping mit lxml und Speichern in MySQL
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Eine Geschichte, die von Go's globalen Variablen und ihrem Umfang abhängig ist
Eine Geschichte über das Ausführen von Python auf PHP auf Heroku
Stellen Sie eine Verbindung zu MySQL her
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
Eine Geschichte von Versuch und Irrtum beim Versuch, eine dynamische Benutzergruppe in Slack zu erstellen
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Geschichte der Verwendung von Resonas Software-Token mit 1Password
So richten Sie eine Python-Umgebung mit pyenv ein
Eine Geschichte über das Ausprobieren von pyenv, virtualenv und virtualenvwrapper
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Eine Geschichte über Kindergärten, Kindergärten und Kindergärten
Eine Geschichte über das Problem, 3 Millionen ID-Daten in einer Schleife zu verarbeiten
Verbinden Sie Python mit MySQL
(Hinweis) Eine Geschichte zum Erstellen eines Frage- und Antwortsystems mit Spring Boot und maschinellem Lernen (SVM).
Eine Geschichte, die es einfach macht, den Wohnbereich mit Elasticsearch und Python abzuschätzen
[Hinweis] Eine Geschichte über den Versuch, eine Klassenmethode mit zwei Unterbalken in der Python 3-Serie zu überschreiben.
[Django] Eine Geschichte über das Feststecken in einem Sumpf beim Versuch, einen Reißverschluss mit einem Formular zu validieren [TDD]
Eine Geschichte über die Portierung des Codes "Versuchen Sie zu verstehen, wie Linux funktioniert" nach Rust
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
[Python] Kapitel 01-03 Über Python (Schreiben und Ausführen eines Programms mit PyCharm)
Eine Geschichte über die Installation von matplotlib mit pip mit einem Fehler
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Eine Geschichte über den Umgang mit dem CORS-Problem
Eine Geschichte über alles von der Datenerfassung über die KI-Entwicklung bis hin zur Veröffentlichung von Webanwendungen in Python (3. KI-Entwicklung)
[Google Photo & Slack Photo Bot] Eine Geschichte über das Erstellen eines Bots, der ein Foto in Google Photo erfasst und an Slack sendet.
Hinweise zum Erstellen einer LAMP-Umgebung mit Vagrant und VirtulBox
Eine Geschichte über das Hinzufügen einer REST-API zu einem mit Python erstellten Daemon
Verarbeiten Sie das Ausführungsergebnis von Splunk mit Python und speichern Sie es in einer Datei
Ein bisschen mehr über Referenzen ~ Verwenden von Python und Java als Beispiele ~
So formatieren Sie eine Tabelle mit Pandas Apply, Pivot und Swaplevel
[Python] Sprechen mit OpenJTalk und Talk API (bis zur Sprachausgabe)
Richten Sie mit Tensorflow einen Knoten für MNIST auf ROS ein
Eine Geschichte darüber, wie man in GAE / P über verstümmelte Charaktere nachdenken möchte
Eine Geschichte über den Versuch, Katsuo Isono, der nicht auf Unannehmlichkeiten reagiert, durch Verarbeitung natürlicher Sprache zu reproduzieren.
Eine Geschichte von einer Person, die Django aus der interaktiven Python-Shell importieren und Dinge in der DB speichern wollte
Eine Geschichte über den Versuch, den Testprozess eines 20 Jahre alten Systems in C zu verbessern