Projet PySide2
Bonjour,
Pour mon boulot, en 2006, j'avais crée une appli avec Excel et VBA, j'avais donc une Interface Utilisateur pour remplir un formulaire et l'intégrer dans la feuille Excel.
Mon entreprise a fait le choix de basculer sur les outils "Google" et la suite "Office" serait amené à disparaitre, et je ne pourrais plus utiliser mon appli actuelle
De ce fait, je suis en train de la re-coder en python avec la bibliotèque qtpy.
Pourquoi qtpy, je n'ai pas trop le choix, je n'ai que le logiciel anaconda3 sur mon PC avec la suite associée dont Spyder qui me sert d'IDE et il y a quelques modules installés dont qtpy et ma version de python qui installé est python3.7.6
Je ne peux pas ajouter d'autres modules que ceux présent sur mon PC ni changer la version de python, donc je fais avec les outils qu'on me donne
Il y a une semaine, j'ai commencé à refaire l'interface qui est composé d'un QTabWidget principal avec 6 onglets (pour l'instant, j'améliore l'interface existante), j'en suis arrivé à presque 700 lignes de codes répartis en 6 fichiers uniquement pour 1 seul onglet et il est terminé à 90% et je suis bloqué pour terminer cet onglet.
Bref, je blablatte mais je n'ai toujours poser ma question ou plutot mes questions, en réalité, j'en ai plusieurs :
1/ J'ai actuellement plus de 9000 lignes à mettre dans une Base de Donnée.
Normalement, elle ne pourra pas diminuer, mais elle peut augmenter jusqu'à 100K, 200K ou 500K lignes, je n'ai aucune idée du nombre finale de ligne
Donc, quelle base de donnée me conseillez vous? Est ce que sqlite3 peut faire l'affaire?
2/ Ensuite, comment puis je lire mon fichier Excel et transférer les donner dans la base de donnée choisie?
Je suis plutôt nul en base de donnée et requête sql
3/ j'aimerais avoir des avis sur la qualité de mon code : la répartition des fichiers, l'orienté objet, les méthodes, les noms des variables et des fonctions ...
je mets mon git pour ceux que ça intéresse de regarder :
https://github.com/Romu80200/Gestion_Articles.git
Merci
Romuald
Hello Romuald,
beau projet !
1/ Pour moi oui, sqlite3 pourra faire l'affaire. En théorie, SQLite peut stocker jusqu'à 2^64-1 lignes dans une table. Tu seras plus rapidement limité par la performance de la machine. Pour une meilleure performance il faudra utiliser MySQL ou équivalent.
2/ pour lire un fichier excel le plus simple est pandas:
pd.read_excel(excel_filename.xlsx, sheet_name=sheetname)
le truc qui est ouf c'est que tu peux directement envoyer ton dataframe dans ta base de donnée:
import pandas as pd
import sqlite3
df = pd.read_excel(excel_filename.xlsx, sheet_name=sheetname)
table_name = 'Student'
conn = sqlite3.connect('mydb.sqlite')
df.to_sql(table_name,conn,if_exists='replace',index=False)
conn.commit()
conn.close()
tu peux changer le if_exists par append par exemple si tu veux ajouter des data à ta table.
Bonsoir PA,
Merci pour ta réponse
Effectivement, je ne pensais pas que c'était si simple de lire un fichier excel et de le transférer vers une base de données
Et 2^64 lignes devraient faire l'affaire, je ne pense arrvivé jusque là, enfin j'espère
Il ne me reste plus qu'à comprendre comment ajouter, modifier et recherche des données dans la table avec sqlite
1/ Pour MySQL, c'est un module de base dans python ou il faut l'installer.
Je ne pense pas l'utiliser mais on ne sait jamais si ça ralentit la machine je devrais peut être le faire.
2/ Je ne sais pas si tu as regardé mon code
Mais si c'est le cas, qu'as tu pensé de l'organisation et de la qualité de mon code?
(Utilisation de POO, noms des variables et des méthodes explicites, lisibilité du code ...)
Hello Romuald,
non désolé pas encore regardé otn code mais j evais le faire je te tiens au courant.
1/ En fait tu aurais une base de donnée qui tourne à côté (un peu différent de sqlite car sqlite est un fichier physique alors que pour MySQL il fuat un serveur de base de donné). Pour faire le lient entre ton script et la base de donnée il faut un lib python qui sert de client mysql pour "dialoguer" avec la DB mais pas de souci il y en a.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte