[PYTHON] L'histoire de l'abandon d'essayer de se connecter à MySQL en utilisant Heroku

Aperçu

Je voulais ajouter une fonction basée sur une base de données au linebot sur lequel je travaille actuellement, alors j'ai essayé de me connecter à MySQL en utilisant Heroku, mais il y avait beaucoup de pierre d'achoppement. En conséquence, j'ai abandonné, mais j'espère que cela sera utile pour les débutants comme moi, donc je vais le résumer au cas où.

environnement

Ce qu'il ne faut pas écrire dans cet article

procédure

1. Installez MySQL

Installez MySQL lui-même avec pip install mysql.

2. Installation du connecteur

Installez le connecteur. Pour être honnête, je ne comprends pas vraiment le rôle, mais comme son nom l'indique, il semble nécessaire de se connecter au serveur MySQL. Il existe de nombreux types de connecteurs selon le but et le langage utilisés, mais j'utilise mysqlclient. Ceci est également installé avec pip install mysqlclient.

3. Préparation à Heroku

Dans mon cas, après avoir terminé toutes les préparations pour MySQL décrites plus tard, j'ai poussé le code à Heroku pour vérifier l'opération, mais j'ai eu une erreur d'importation MySQL. Il y avait deux causes, mais la première était la description des «exigences» dans le fichier poussé. Une erreur s'est produite car je n'ai pas répertorié le connecteur MySQL ici (au fait, je n'étais pas sûr au début et j'ai répertorié la version de MySQL elle-même, mais lorsque je l'ai poussée, une erreur s'est produite. Masu).

Deuxièmement, lorsque vous utilisez MySQL avec Heroku, il semble que ClearDB est utilisé et qu'un compte créé à partir de celui-ci est requis. Je vais omettre la méthode d'enregistrement détaillée, mais en guise de mise en garde, la plupart des articles sur ClearDB disent qu'après l'enregistrement, copiez la variable d'environnement CLEARDB_DATABASE_URL, changez le début en mysql2 et définissez-le sur DATABASE_URL. , Cette opération ne semble nécessaire que pour Ruby.

Par conséquent, cette fois, j'ai décidé de me connecter à MySQL en utilisant le compte de CLEARDB_DATABASE_URL lorsque ClearDB a été ajouté avec heroku addons: create cleardb: ignite. Puisqu'il est décrit dans CLEARDB_DATABASE_URL sous la forme de mysql: // [username]: [password] @ [hostname] / [db_name]? Reconnect = true,mysql --host = [hostname] sur le terminal. Vous pouvez vous connecter en tapant --user = [nom d'utilisateur] --password = [mot de passe] [nom_base].

4. Préparation avec MySQL

Si je peux entrer MySQL en toute sécurité, je créerai les tables nécessaires, etc., mais un problème se produit ici. J'ai tapé une requête sur le moniteur pour créer une table normalement, mais j'ai eu l'erreur «ERREUR 2013». Immédiatement après cela, lorsque j'ai entré à nouveau la même requête, j'ai eu une autre erreur, mais l'exécution elle-même était terminée. À partir de là, j'ai pensé que je devais probablement modifier les paramètres du système de temporisation, mais je n'ai pas accepté la commande pour le modifier. Après de nombreuses recherches, je suis arrivé à la conclusion que la cause première était que je devais migrer pour modifier les paramètres de la base de données. Cependant, bien que j'aie étudié comment migrer Flask, je ne pouvais pas du tout le comprendre. À l'origine, je n'étais pas particulier à propos de MySQL lui-même, alors j'ai abandonné et j'ai décidé d'utiliser postgresql, qui est la base de données standard de Heroku.

~~ Quand je l'ai recherché dans le message d'erreur, il semblait qu'il pouvait être résolu en augmentant la valeur telle que connect_timeout, mais ce n'est pas une solution fondamentale et elle peut être traitée sans problème si l'utilisateur root entre, donc ClearDB J'ai pensé qu'il pourrait y avoir un problème particulier. Donc, si vous regardez de plus près le site ClearDB, ~~

~~ Il est recommandé d'utiliser MySQL Workbench, Sequel Pro pour Mac OS X, Navicat, etc. lors de l'édition de la base de données. ~~

J'ai trouvé une description disant ~~. Cela semble être des outils d'interface graphique qui vous permettent d'utiliser MySQL sans entrer directement de requête, et j'ai déjà vu quelqu'un utiliser MySQL Workbench dans un article, alors j'ai décidé d'essayer ceci. J'ai pu créer avec succès la table nécessaire dans Référez-vous à cet article pour les méthodes de fonctionnement détaillées. ~~

En passant, lorsque j'ai essayé pour la première fois d'entrer dans MySQL en tant qu'utilisateur root après avoir pratiqué MySQL, je ne pouvais pas trouver le mot de passe, peu importe combien je cherchais. Je savais que le mot de passe initial était répertorié dans le fichier donné lorsque j'ai installé MySQL, mais je n'ai pas pu trouver ce fichier, quel que soit le nombre d'étapes que j'ai suivies. En conséquence, j'ai réussi à entrer dans MySQL à Reportez-vous à cet article.

Résumé

Je l'ai écrit pendant longtemps, mais en résumé

  1. Installez MySQL
  2. Installation du connecteur
  3. Enregistrez ClearDB avec Heroku (indiquez la version du connecteur dans les exigences)
  4. ~~ Edition dans ClearDB avec MySQL Workbench ~~ Migration?

Ce sera.

Cette fois, j'ai essayé un nouveau champ appelé base de données, et ce fut une excellente expérience d'apprentissage car j'avais besoin d'une perspective différente de l'écriture du code que j'avais fait jusqu'à présent. La base bêta semble indispensable pour presque tous les services, je voudrais donc profiter de cette opportunité pour acquérir de solides connaissances et élargir mes compétences.

référence

Recommended Posts

L'histoire de l'abandon d'essayer de se connecter à MySQL en utilisant Heroku
Une histoire d'essayer d'exécuter JavaScripthon sur Windows et d'abandonner.
Une histoire sur un débutant essayant de configurer CentOS 8 (mémo de procédure)
Une histoire d'essayer d'installer uwsgi sur une instance EC2 et d'échouer
Une histoire sur un débutant Python essayant d'obtenir des résultats de recherche Google à l'aide de l'API
J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
Une histoire sur la tentative d'implémentation de variables privées en Python.
L'histoire de l'utilisation de la réduction de Python
Connectez-vous à MySQL à l'aide de Flask SQL Alchemy
Une histoire sur la tentative d'exécuter plusieurs versions de Python (édition Mac)
Une histoire sur Python pop and append
Scraping à l'aide de lxml et enregistrement sur MySQL
Une histoire sur l'apprentissage automatique simple avec TensorFlow
Une histoire accro aux variables globales et à la portée de Go
Une histoire sur l'exécution de Python sur PHP sur Heroku
Connectez-vous à mysql
Une histoire sur la modification de Python et l'ajout de fonctions
Une histoire d'essais et d'erreurs essayant de créer un groupe d'utilisateurs dynamique dans Slack
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Histoire de l'utilisation du jeton logiciel de Resona avec 1Password
Comment configurer un environnement Python à l'aide de pyenv
Une histoire d'essayer pyenv, virtualenv et virtualenvwrapper
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Histoire autour de la maternelle, de l'école maternelle, du jardin d'enfants
Une histoire sur la difficulté à traiter en boucle 3 millions de données d'identification
Connectez python à mysql
(Remarque) Une histoire sur la création d'un système de questions et réponses à l'aide de Spring Boot et de l'apprentissage automatique (SVM).
Une histoire qui facilite l'estimation de la surface habitable à l'aide d'Elasticsearch et de Python
[Note] Une histoire sur la tentative de remplacer une méthode de classe avec deux barres inférieures dans la série Python 3.
[Django] Une histoire sur le fait de rester coincé dans un marais en essayant de valider un zip avec un formulaire [TDD]
Une histoire sur le portage du code de "Essayez de comprendre comment fonctionne Linux" sur Rust
Une histoire sur la façon de spécifier un chemin relatif en python.
[Python] Chapitre 01-03 À propos de Python (Ecrire et exécuter un programme à l'aide de PyCharm)
Une histoire sur l'installation de matplotlib à l'aide de pip avec une erreur
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Une histoire sur la façon de traiter le problème CORS
Une histoire sur tout, de la collecte de données au développement d'IA et à la publication d'applications Web en Python (3. développement d'IA)
[Google Photo & Slack Photo Bot] Une histoire sur la création d'un bot qui acquiert une photo dans Google Photo et l'envoie à Slack.
Remarques sur la création d'un environnement LAMP à l'aide de Vagrant et VirtulBox
Une histoire sur l'ajout d'une API REST à un démon créé avec Python
Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier
Un peu plus sur les références ~ Prenant Python et Java comme exemples ~
Comment formater un tableau à l'aide de Pandas Appliquer, pivoter et permuter le niveau
[Python] Talk en utilisant OpenJTalk et l'API Talk (jusqu'à la sortie vocale)
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
Une histoire sur le fait de vouloir penser à des personnages déformés dans GAE / P
Une histoire sur la tentative de reproduire Katsuo Isono, qui ne réagit pas aux inconvénients, par traitement du langage naturel.
Une histoire d'une personne qui voulait importer django depuis le shell interactif de python et enregistrer des choses dans la base de données
Une histoire d'essayer d'améliorer le processus de test d'un système vieux de 20 ans écrit en C