Comment ouvres-tu ta base de données? Tu donnes forcément le chemin relatif ou absolu de l'endroit où se trouve ce fichier. Je ne vois pas le sens de ta question. Tu peux écrire autant de scripts que tu veux pour en faire la maintenance. Je la mettrait dans un dossier qui serait à l'abri de destructions accidentelles.
Le Tout est souvent plus grand que la somme de ses parties.
la base de données ce sont tes données, qui peuvent être par un gestionnaire de base de données (mysql, sql serveur, mariadb, sqlite) ou pas (la base peut être un ou plusieurs fichiers texte ou autres (csv, excel, ...)
L'emplacement dépend essentiellement de qui a besoin d'avoir accès à cette base (et également de l'emplacement du gestionnaire de base de données). Est-ce que ce sont plusieurs personnes au sein d'un même réseau ? est-ce que ça doit être accessible depuis internet ? etc etc?
La maintenance de la base de données devrait se faire en dehors d'une application d'utilisation de la base (ou dans une partie accessible à ceux qui doivent la maintenir) ou directement via le gestionnaire de base de données. Mais qu'est-ce que tu appelles maintenance ?
que doit/peut faire l'utilisateur de bulletin.py ? Est-ce qu'il peut ajouter/modifier des notes (=mettre à jour la base) et faire les calculs ?
L'emplacement est secondaire (ça influera en principe juste la chaine de connexion à la base)
J'ai eu un peu de mal à formuler ma requête, je conçois qu'elle vous ait un peu "dérangés" pour que vous puissiez y répondre.
Cela dit, elles m'apportent les précisions que j'attendais.
- D'abord, je précise que je suis le seul utilisateur (ni réseau, ni Internet, seulement "localhost")
- J'ai un script "bulletins.py" qui sera alimenté par les notes venant d'une base de données : grâce à ce script, j'obtiendrai, non seulement, les listings des notes de tous les élèves dans chaque matière, mais aussi, les sorties-imprimante des bulletins individuels.
- J'ai un autre script "notes.py" dont j'assurerai la maintenance : j'entends par maintenance, l'ajout des notes, des coefficients, des matières à des moments qui diffèrent dans le temps, les modifications ou changements en cas de nécessités, etc.
Compte tenu de mon inexpérience dans la programmation Python, je me demandais si ces deux scripts devaient obligatoirement coexister dans un même fichier .py, ou si je pouvais envisager deux fichiers distincts (et même indépendant pour "notes.py"), le fichier "bulletins.py" ayant une liaison avec le fichier "notes.py".
C'est cette réponse, Umfred, que j'attendais :
"La maintenance de la base de données devrait se faire en dehors d'une application d'utilisation de la base (ou dans une partie accessible à ceux qui doivent la maintenir)"
Et la réponse de Pierrot m'intéresse en ce sens que je comprends que ma base de données peut être dans un autre répertoire ("Je la mettrait dans un dossier qui serait à l'abri de destructions accidentelles.") : dans ce cas, j'ai besoin de savoir comment préciser le chemin de ma BD "notes.py" dans mon script "bulletins.py".
- J'ai un autre script "notes.py" dont j'assurerai la maintenance : j'entends par maintenance, l'ajout des notes, des coefficients, des matières à des moments qui diffèrent dans le temps, les modifications ou changements en cas de nécessités, etc.
La maintenance de la base de donnée, c'est faire des sauvegardes ou des mises à jour.
Tout ce qui est donné ou schéma (les tables et leurs relations) relève de la maintenance des applications qui utilisent la base de données (puisqu'elles devront prendre en compte des évolutions des données....). Ce que vous appelez maintenance, c'est juste la mise à jour de données et c'est une fonctionnalité de l'application
chrisblues59 a écrit:
Compte tenu de mon inexpérience dans la programmation Python, je me demandais si ces deux scripts devaient obligatoirement coexister dans un même fichier .py, ou si je pouvais envisager deux fichiers distincts (et même indépendant pour "notes.py"), le fichier "bulletins.py" ayant une liaison avec le fichier "notes.py".
Imaginez programmer avec un langage autre que Python, les données persistantes (fichiers textes ou autres) sont indépendantes du langage. Dire si on doit créer 2 programmes (2 scripts qui se lancent indépendamment) ou un seul (tout dans le même script) change la vie de l'utilisateur (ce qu'il va devoir faire pour...) et savoir où le(s) programme(s) vont chercher les données que çà affiche ne va l'intéresser que lorsque ça n'affiche pas ce qu'il attend.
Bienvenue dans la programmation où on ne mélange pas le point de vue de l'utilisateur (celui pour qui on fabrique un outil/programme), du programmeur (celui qui écrit le code) et le mainteneur (qui va faire des sauvegardes, des restaurations, des mises à jours, ...) et pour compliquer les choses, une application se divise aussi en "point de vues".
bulletins.py et notes.py n'ont pas de liaison entre eux, leur seul point commun c'est la base de données: bulletins lit les données; notes y mets les données (notes, matières, élèves)
Pour le chemin de la base de données, ça dépend de celle-ci, si c'est via mysql ou sql server, on utilise une chaine de connection pour se connecter à la base (la base étant dans un dossier data mais on n'a pas forcément besoin de savoir où elle se trouve, c'est mysql/sql server qui fait la liaison. Si ce sont des fichiers autres (type texte, csv, ...) c'est à toi de définir leur emplacement le plus "pertinent"
[bulletins.py et notes.py n'ont pas de liaison entre eux, leur seul point commun c'est la base de données: bulletins lit les données; notes y mets les données (notes, matières, élèves)]
Moi :
Oui, c'est comme ça que je conçois mes deux scripts qui sont séparés.
Umfred :
[Pour le chemin de la base de données, ça dépend de celle-ci, si c'est via mysql ou sql server, on utilise une chaine de connection pour se connecter à la base (la base étant dans un dossier data [...]
Moi :
Si la base de données reste dans le même répertoire, on n'a pas besoin de préciser le chemin. Mais si la base se trouve dans un autre répertoire, comment l'indique-t-on au script appelant ? Je suis sur "sqlite".
Comment fait-on pour citer une partie de la réponse du "forumeur" ?
Si la base de données reste dans le même répertoire, on n'a pas besoin de préciser le chemin. Mais si la base se trouve dans un autre répertoire, comment l'indique-t-on au script appelant ? Je suis sur "sqlite".
Dans le même répertoire par défaut de l'utilisateur qui lance le programme (et non le répertoire dans lequel est le script). Sinon, c'est le nom d'un fichier qu'on passe de façon absolue ou relative.
Si vous ne maîtrisez pas les bases, vous n'allez pas pouvoir penser correctement comment réaliser votre application et faire de mauvais choix. Et il est difficile d'écrire en quelques lignes ce que les tutos racontent sur des chapitres entiers (et vous ouvrent à d'autres options).
MPS, comment faites-vous pour citer un paragraphe de mes propos ?
Dans la zone de message, à gauche tu as le pseudo et son illustration, puis un lien de date du message, et à droite (caché), tu as : citer ou signaler.
Il faut être en mode paysage sur smartphone ou sur une tablette ou sur un ordinateur.
MPS, comment faites-vous pour citer un paragraphe de mes propos ?
C'est une des fonctionnalités basique d'un forum de discussion... alors on cherche un peu pour voir ce qui pourrait y ressembler et on teste.
Pour revenir à la discussion de départ, si vous ne savez pas comment sont organisés les fichiers d'un disque dur, ou les conventions concernant répertoire par défaut d'un programme, ... vous n'avez pas de "modèle/représentation mentale" pour réfléchir à comment réaliser avec ce que vous voulez programmer.
J'ai déjà testé le bouton "Citer" en haut à droite du post : je connais ce procédé. Mais il "cite" le post entier !
Ce que je souhaite savoir, c'est "citer une partie du post", et non l'ensemble.
MPS,
J'ai déjà cherché, par exemple, je sélectionne la phrase que je souhaite citer, mais j'ai beau "citer" ensuite, cela reprend l'ensemble du post.
Si je fais un copié-collé, il n'y a pas la petite barre à gauche. Ne vous inquiétez pas, je finirai par trouver, mais je suis surpris de votre réponse, vous vous montrez habituellement disponible et d'une aide que j'apprécie beaucoup.
Quant à la base de données, je la laisse finalement dans le même répertoire que le script appelant. Mais je crois savoir comment indiquer le chemin s'il me prend l'envie de la mettre dans un autre dossier.
Exemple :
# Établissement de la connexion - Création du cur :
fichierDonnees = "D:/SQLite/Notes.db"
connex = sqlite3.connect(fichierDonnees)
cur = connex.cursor()
Si je fais un copié-collé, il n'y a pas la petite barre à gauche. Ne vous inquiétez pas, je finirai par trouver, mais je suis surpris de votre réponse, vous vous montrez habituellement disponible et d'une aide que j'apprécie beaucoup.
Il est facile d'effacer les lignes qu'on ne veut pas récupérer. Par contre pour faire un déooupage de la réponse en plusieurs petits bouts, je passe par l'éditeur HTML (encore un bouton qu'il faut oser activer pour voir).
chrisblues59 a écrit:
Quant à la base de données, je la laisse finalement dans le même répertoire que le script appelant. Mais je crois savoir comment indiquer le chemin s'il me prend l'envie de la mettre dans un autre dossier.
Tout çà pour çà?
Vous auriez pu avoir la curiosité de savoir si on peut récupère le répertoire du script (via __file__) pour construire le nom du fichier de la base de données. Mais concernant la question de départ, avec SQLITE les données ne sont pas "partagées", autant placer la base de données dans un sous répertoire utilisateur.
Oui, mais "tout ça", moi, je ne sais pas... et "j'aurais pu"... ben, non, "je n'aurais pas pu" avec la meilleure volonté... Je perçois un ton quelque peu condescendant et limite moralisateur...
"Tout ça pour ça ? (ne mettez pas d'accent grave sur "ça"...) " : oui, et les réponses que j'ai obtenues grâce au forum m'ont aidé et beaucoup fait découvrir à travers le projet que je suis en train de mettre en place. Vous, vous en êtes à un niveau auquel je suis loin de parvenir, et je ne prétends pas y arriver un jour, mais il est inutile de chercher à me "titiller", pour ne pas dire plus.
Restez sympa et veuillez considérer que je suis en apprentissage "constant" et que je ne peux tout connaître de Python : j'ai la chance de bénéficier du savoir-faire des membres du forum (ce dont je les remercie beaucoup), et de mon côté, je cherche à mon humble niveau.
Restez sympa et veuillez considérer que je suis en apprentissage "constant" et que je ne peux tout connaître de Python : j'ai la chance de bénéficier du savoir-faire des membres du forum (ce dont je les remercie beaucoup), et de mon côté, je cherche à mon humble niveau.
Si depuis les premières réponses qu'on vous a donné vous n'avez pas eu le réflexe d'aller ouvrir votre tuto préféré au chapitre qui parle des fichiers, vous allez accumuler un tas de trucs survolés mais pas acquis. A vouloir faire sans, vous allez rapidement vous retrouver face à un mur où vous ne maîtriserez plus rien...
A ce moment là, personne ne pourra vous aider car tout reprendre à zéro est fastidieux. Pire vous aurez en plus pris de mauvaises habitudes dont il sera difficile de vous défaire/
on sait maintenant qu'on part du sqlite (ça peut aider à guider ensuite)
Où mettre ma base de données ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.