[PYTHON] Comment créer une grande quantité de données de test dans MySQL? ??

Après avoir défini les bases de données et les tables pendant le développement à l'aide de MySQL, vous souhaiterez peut-être des données de test. Ici, nous allons introduire la procédure de la création de la base de données à l'enregistrement des données de test.

Exécution du fichier de script

Lors de la création d'une grande quantité de données de test, il est nécessaire d'automatiser le travail. Dans MySQL, vous pouvez exécuter des fichiers avec des commandes SQL en plus de saisir manuellement des commandes SQL.

Par exemple, s'il existe un fichier qui décrit la commande SQL suivante, la méthode d'exécution est la suivante.

SQLFile.sql


CREATE DATABASE CreateTestData;
SHOW DATABASES;

Terminal


#Connectez-vous à mysql
mysql -u root -p
Enter password: 
・
・
・
# SQLFile.Exécutez SQL
mysql> SOURCE SQLFile.sql
+--------------------+
| Database           |
+--------------------+
| information_schema |
| CreateTestData     |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.03 sec)

Étant donné que vous pouvez lire un fichier externe et exécuter des commandes SQL de cette manière, si vous pouvez générer un fichier qui décrit une grande quantité de commandes SQL qui génèrent des données de test, vous pouvez enregistrer une grande quantité de données de test.

Création d'un fichier de script pour l'enregistrement des données de test

Tableau pour enregistrer les données

Cette fois, définissez la table utilisateur suivante et créez des exemples de données.

CREATE.sql


CREATE TABLE user (
  user_id INT PRIMARY KEY AUTO_INCREMENT,
  user_name VARCHAR(45),
  user_age INT,
  created_at DATETIME
 );

Créer un programme qui génère des données de test comme ça

Du point de vue de la compréhension et de la lecture du contenu, le programme qui génère le script sql avec python3 est illustré ci-dessous.

createSQL.py


# coding:utf-8
import random
import time

#Générer un nom à partir d'une liste de nom et prénom
def randomName():
    myouji = ["Tanaka", "Suzuki", "Sato", "Takahashi"]
    namae = ["Taro", "Jiro", "Saburo", "Hanako"]
    return random.choice(myouji) + random.choice(namae)

# 0~Générer 100 nombres aléatoires
def randomAge():
    return random.randint(0, 100)

#Génération de date aléatoire entre le début et la fin
def randomDate(start, end):
    format = '%Y-%m-%d %H:%M:%S'
    stime = time.mktime(time.strptime(start, format))
    etime = time.mktime(time.strptime(end, format))
    ptime = stime + random.random() * (etime - stime)
    return time.strftime(format, time.localtime(ptime))

#Nom du fichier de sortie
OUTPUT_FILE = "TestData.sql"

#Nombre de données à enregistrer
RECORD_COUNT = 10

#Chaîne de commande SQL à exécuter
sqlCommands = ""

#Spécifiez la base de données à utiliser(Cette fois, CreateTestData)
sqlCommands += "USE CreateTestData;\n"

#Générer des instructions INSERT pour le nombre de données à enregistrer
for _ in range(RECORD_COUNT):

    #Génération de données aléatoires à enregistrer
    name = randomName()
    age  = randomAge()
    date = randomDate("2014-6-28 00:00:00", "2015-6-28 00:00:00")

    #Générer une instruction d'insertion à partir de données aléatoires
    sqlCommands += "INSERT INTO user " \
                   "(user_name, user_age, created_at) " \
                   "VALUES ('{}', '{}', '{}');\n"\
                   .format(name, age, date)

#Ecrire la commande SQL générée dans un fichier
f = open(OUTPUT_FILE, 'w')
f.write(sqlCommands)
f.close()

L'exécution du programme ci-dessus générera un fichier appelé TestData.sql dans le même répertoire. S'il peut être généré avec succès, le contenu de TestData.sql sera comme suit, et les instructions INSERT pour le nombre de données enregistrées sont décrites.

TestData.sql


USE CreateTestData;
INSERT INTO user (user_name, user_age, created_at) VALUES ('Jiro Sato', '39', '2015-04-28 04:08:08');
INSERT INTO user (user_name, user_age, created_at) VALUES ('Jiro Suzuki', '60', '2015-06-25 23:37:52');
INSERT INTO user (user_name, user_age, created_at) VALUES ('Saburo Tanaka', '40', '2015-04-20 04:56:53');
・
・
・

Exécution du fichier de script généré

Pour enregistrer les données de test, exécutons et vérifions le fichier de script généré comme indiqué ci-dessus.

Terminal


#Connectez-vous à mysql
mysql -u root -p
Enter password: 
・
・
・

#Enregistrement des données de test
mysql> SOURCE TestData.sql

Database changed
Query OK, 1 row affected (0.01 sec)

Query OK, 1 row affected (0.00 sec)
・
・
・

#Vérifiez si les données ont été enregistrées
mysql> select * from user;
+---------+--------------+----------+---------------------+
| user_id | user_name    | user_age | created_at          |
+---------+--------------+----------+---------------------+
|       1 |Jiro Sato|       39 | 2015-04-28 04:08:08 |
|       2 |Jiro Suzuki|       60 | 2015-06-25 23:37:52 |
|       3 |Saburo Tanaka|       40 | 2015-04-20 04:56:53 |
|       4 |Saburo Sato|       77 | 2015-04-08 02:46:19 |
|       5 |Jiro Sato|       57 | 2014-11-17 11:21:06 |
|       6 |Taro Takahashi|       83 | 2014-09-20 07:57:11 |
|       7 |Hanako Tanaka|       24 | 2014-11-17 00:51:38 |
|       8 |Jiro Takahashi|       89 | 2014-11-29 20:22:24 |
|       9 |Taro Tanaka|       38 | 2015-02-26 18:04:42 |
|      10 |Jiro Sato|       13 | 2014-09-26 13:14:35 |
+---------+--------------+----------+---------------------+
10 rows in set (0.00 sec)

Il a été confirmé que 10 échantillons de données avaient été enregistrés avec succès.

Résumé

J'ai pu enregistrer les données en générant un fichier de script pour créer des données de test et en exécutant le fichier de script. À mesure que le nombre de tables et de colonnes augmente, vous pouvez enregistrer des données de test pour n'importe quelle table et colonne en étendant le programme en conséquence.

Profitons de la vie de développement!

Recommended Posts

Comment créer une grande quantité de données de test dans MySQL? ??
[Version compatible TensorFlow 2.x] Comment entraîner une grande quantité de données à l'aide de TFRecord et DataSet dans TensorFlow (Keras)
Comment créer un fichier JSON en Python
Comment créer des données à mettre dans CNN (Chainer)
Comment créer une API Rest dans Django
Comment envoyer une image visualisée des données créées en Python à Typetalk
Exemple d'agrégation d'une grande quantité de données de séries temporelles à l'aide de Python dans un petit environnement de mémoire à une vitesse raisonnable
One-liner qui crée un grand nombre de fichiers de test à la fois sous Linux
Comment développer dans un environnement virtuel Python [Memo]
Comment obtenir une liste d'exceptions intégrées pour python
Comment obtenir un aperçu de vos données dans Pandas
Comment créer un package Conda
Comment créer un Dockerfile (basique)
Comment créer un fichier de configuration
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Comment afficher une colonne de fichiers spécifiée sous Linux (awk)
Présentation de la création d'un socket serveur et de la création d'un socket client
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Créez une fonction pour obtenir le contenu de la base de données dans Go
Comment créer un clone depuis Github
Comment créer un dossier git clone
Comment utiliser Google Test en langage C
Comment obtenir stacktrace en python
Comment gérer des valeurs consécutives dans MySQL
Comment créer un référentiel à partir d'un média
Comment tester sur une page authentifiée par Django
Comment tester chaque version d'IE en utilisant Selenium avec modan.IE (VM)
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
[Environnement de développement] Comment créer un ensemble de données proche de la base de données de production
Comment bien formater une liste de dictionnaires (ou d'instances) en Python
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
Comment calculer la volatilité d'une marque
Comment créer des exemples de données CSV avec hypothèse
Créez un environnement de test Vim + Python en 1 minute
Comment créer des fichiers volumineux à haute vitesse
Téléchargez un grand nombre d'images sur Wordpress
Comment effacer un taple dans une liste (Python)
Comment suivre le travail avec Powershell
Comment incorporer des variables dans des chaînes python
Comment créer un objet fonction à partir d'une chaîne
Résumé de la façon d'importer des fichiers dans Python 3
Je veux créer une fenêtre avec Python
Créer un ensemble de données en échantillonnant au hasard les données MNIST
Comment implémenter un sélecteur de dégradé dans Houdini
Comment notifier les canaux Discord en Python
[Note] Comment créer un environnement de développement Ruby
Comment créer une boîte de saisie Kivy 1 ligne
Procédure de création d'application multi-plateforme avec kivy
Comment lire les données de séries chronologiques dans PyTorch
[Python] Comment dessiner un histogramme avec Matplotlib
Comment écrire un document tuple nommé en 2020