Réimprimé de: Smart Demo
Cet article 1542 mots , Suggérer une lecture 4 minutes .
Cet article prend 17 textes txt et plus de 30000 éléments de données à titre d'exemple, et utilise Python pour se connecter à la base de données MySQL pour obtenir un fonctionnement rapide.
Scénario d'application : De nombreuses données doivent être intégrées, dédupliquées et exportées dans un format spécifique. Si vous utilisez Excel, il est non seulement long et laborieux, mais aussi inexact. Existe-t-il une solution plus efficace?
Cet article prend 17 textes txt et plus de 30000 éléments de données à titre d'exemple, et utilise Python pour se connecter à la base de données MySQL pour obtenir un fonctionnement rapide.
Si quelqu'un d'autre fait des heures supplémentaires, mon petit assistant Python le fera en quelques secondes!
Cet article comprend principalement les trois aspects suivants:
- Écriture de données
- Déduplication des données
- Sortie de données
Écrire des données dans la base de données MySQL
Le fichier ci-dessous est la source de données de cet article:
Notre hypothèse est la suivante: écrire un petit programme, le jeter dans ce dossier et double-cliquer pour lire automatiquement les données de chaque document txt et les écrire dans la base de données.
le code montre comme ci-dessous:
import pymysqlimport osconn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'qq', charset = 'utf8') cur = conn.cursor () cur.execute (" CREATE TABLE qq (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id)); ") conn.commit () path = os.getcwd () files = os.listdir (path) i = 0 pour le fichier dans les fichiers: f = open (fichier, 'r', encoding = 'UTF-8') next (f) pour la ligne dans f: i + = 1 #print (line) sql = "insérer dans qq ( qq) valeurs (% s); "cur.execute (sql, line) print (" insert number ", i," data! ") conn.commit () f.close () cur.close () conn.close ()résultat courant:
Explication du code clé:
Ce code utilise les bibliothèques pymysql et os.
- pymysql: utilisé pour faire fonctionner la base de données MySQL;
- os: utilisé pour parcourir tous les fichiers du dossier.
Le code principal est maintenant expliqué comme suit:
1. Parcourez tous les noms de fichiers dans n'importe quel dossier
Une fois le programme écrit, utilisez pyinstaller pour l'empaqueter dans un programme exe et placez-le sous le dossier à utiliser.
Utilisez la commande path = os.getcwd () pour obtenir le répertoire où se trouve le fichier exe.
Utilisez la commande files = os.listdir (path) pour obtenir les noms de tous les fichiers dans le répertoire où se trouve le fichier exe et les enregistrer dans la liste des fichiers.
De cette façon, nous avons obtenu tous les noms de fichiers txt, vous pouvez nommer votre nom de fichier txt, le programme peut le lire.
2. Écrire des données dans la base de données
(1) Connectez-vous à la base de données et créez une nouvelle table dans la base de données
A. Se connecter à ma base de données qq
conn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'qq', charset = 'utf8')
B. Créer une nouvelle table qq
Créez une nouvelle table dans la base de données qq. Le nom de la table est qq et contient 2 champs: le champ id est la clé primaire et incrémente automatiquement; le champ qq est un type de caractère et est utilisé pour stocker des données.
cur.execute ("CREATE TABLE qq (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id))")
(2) Ecrire des données dans la base de données
Deux couches de boucles sont utilisées ici:
pour le fichier dans les fichiers: f = open (fichier, 'r', encoding = 'UTF-8') next (f) pour la ligne dans f: i + = 1 #print (line) sql = "insérer dans qq (qq) valeurs (% s); "cur.execute (sql, line) print (" insert number ", i," item data! ") conn.commit () f.close ()La première boucle est utilisée pour ouvrir les 17 fichiers txt ci-dessus dans l'ordre.
La deuxième boucle consiste à lire tour à tour chaque ligne de chaque fichier txt et à insérer les données de ligne modifiées dans le champ qq de la table de base de données qq.
À ce stade, l'importation des données est terminée, soit un total de 32073 données.
Nettoyage des données
Ici, en prenant la valeur de déduplication comme exemple, une brève introduction au nettoyage des données.
1. Créez une nouvelle table pour stocker les données nettoyées
Vous pouvez vous connecter à MySQL dans la fenêtre cmd, ouvrir la base de données qq et effectuer les opérations suivantes:
CREATE TABLE qq_dist (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id));
De cette façon, une nouvelle table qq_dist est créée pour stocker les données nettoyées pour un rappel ultérieur.
2. Données de nettoyage
Après vous être connecté à MySQL, procédez comme suit:
insérer dans qq_dis (qq) sélectionner qq distinct de qq;
Insérez le contenu du champ qq unique trouvé dans la table qq dans le champ qq de la table qq_dist.
Exporter des données dans un format spécifique
Cas : Exporter les lignes 101-200 des données nettoyées vers un nouveau texte txt.
le code montre comme ci-dessous:
import pymysqlconn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'wxid', charset = 'utf8') print ("Writing, please wait ...") cur = conn.cursor () sql = "select wxid from wd_dis limit 100,100;" cur.execute (sql) conn.commit () alldata = cur.fetchall () f = open ('data101-200.txt', 'a ') i = 0 pour les données dans toutes les données: i + = 1 f.write (data) f.flush () f.closecur.close () conn.close () print ("écriture terminée, un total de {} données a été écrit ! ". Format (i))Explication du code clé:
1, limite
La signification de la fonction limit m, n dans MySQL est: lire la ligne n de la ligne m + 1.
Donc, dans ce cas, la lecture des lignes 101-200 est limitée à 100100
2. flush ()
La fonction flush () doit être ajoutée, elle peut écrire les données du tampon dans le fichier. Sinon, il y aura une erreur indiquant que le document txt généré est vide.
-Terminer-
Suivez la plateforme publique officielle WeChat de Tsinghua-Qingdao Data Science Research Institute " THU Data Pie "Et numéro de sur" Data Pie THU "Obtenez plus d'avantages de cours et un contenu de qualité.