{"id":5859,"date":"2024-08-29T18:14:53","date_gmt":"2024-08-29T18:14:53","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/creation-de-tables-sqlite-en-python-guide\/"},"modified":"2024-08-29T18:14:56","modified_gmt":"2024-08-29T18:14:56","slug":"creation-de-tables-sqlite-en-python-guide","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/creation-de-tables-sqlite-en-python-guide\/","title":{"rendered":"10.3 Cr\u00e9ation de Tables SQLite en Python : Guide"},"content":{"rendered":"\n<p><strong>Cr\u00e9ation de Tables SQLite en Python<\/strong> est une comp\u00e9tence essentielle pour quiconque souhaite travailler avec des bases de donn\u00e9es locales dans ses projets Python. Gr\u00e2ce \u00e0 ce guide, vous apprendrez comment cr\u00e9er et manipuler des tables SQLite en utilisant Python, avec des exemples pratiques pour vous aider \u00e0 bien comprendre chaque \u00e9tape.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 <strong>SQLite en Python<\/strong><\/h2>\n\n\n\n<div id=\"videoContainer\" style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;\">\n  <iframe src=\"https:\/\/player.vimeo.com\/video\/583418730?dnt=1&#038;fullscreen=0&#038;pip=0\" loading=\"lazy\" loading=\"lazy\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen id=\"vimeoPlayer\"><\/iframe>\n  \n  <!-- Popup Desktop -->\n  <div id=\"popupContainer\" class=\"desktop-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 400px; padding: 20px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n    <h2 style=\"color: #333; font-size: 1.5em; margin: 10px 0;\" id=\"profitez-de-loffre-spciale-\">Profitez de l\u2019offre sp\u00e9ciale !<\/h2>\n    <p style=\"color: #e74c3c; font-size: 1.2em; margin: 10px 0;\">Obtenez notre cours pour seulement <strong id=\"price\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n    <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: block; padding: 10px 20px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 1em; margin: 20px auto;\" rel=\"noopener\">Commencer maintenant<\/a>\n    <button onclick=\"closePopup()\" style=\"padding: 10px 20px; font-size: 1em;\">Fermer<\/button>\n  <\/div>\n\n  <!-- Popup Mobile -->\n  <div id=\"popupContainerMobile\" class=\"mobile-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; max-width: 300px; padding: 15px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n    <p style=\"color: #e74c3c; font-size: 1em; margin: 5px 0;\">Cours sp\u00e9cial \u00e0 <strong id=\"priceMobile\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n    <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: inline-block; padding: 8px 15px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 0.9em;\" rel=\"noopener\">Commencer maintenant<\/a>\n    <button onclick=\"closePopup()\" style=\"padding: 5px 10px; font-size: 0.9em;\">Fermer<\/button>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    var iframe = document.getElementById('vimeoPlayer');\n    var player = new Vimeo.Player(iframe);\n    var isPopupDisplayed = false;\n\n    player.on('play', function() {\n        if (!isPopupDisplayed) {\n            player.on('timeupdate', function(data) {\n                if (data.seconds >= 120 && !isPopupDisplayed) { \/\/ 120 seconds = 2 minutes\n                    \/\/ Pause the video and display the popup\n                    player.pause().then(function() {\n                        if (window.innerWidth > 768) {\n                            document.querySelector('.desktop-popup').style.display = 'block';\n                        } else {\n                            document.querySelector('.mobile-popup').style.display = 'block';\n                        }\n                        fetchPriceAndUpdatePopup();\n                        isPopupDisplayed = true;\n                    });\n                }\n            });\n        }\n    });\n\n    function fetchPriceAndUpdatePopup() {\n        fetch('https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144')\n            .then(response => response.text())\n            .then(html => {\n                var parser = new DOMParser();\n                var fetchedDoc = parser.parseFromString(html, 'text\/html');\n                var priceElement = fetchedDoc.querySelector('.ammount .fw-500');\n                var originalPriceElement = fetchedDoc.querySelector('.ammount del');\n                var price = priceElement ? priceElement.textContent.trim() : '29.5\u20ac';\n                var originalPrice = originalPriceElement ? originalPriceElement.textContent.trim() : '59\u20ac';\n\n                document.getElementById('price').textContent = price;\n                document.getElementById('priceMobile').textContent = price;\n                document.querySelector('.desktop-popup del').textContent = originalPrice;\n                document.querySelector('.mobile-popup del').textContent = originalPrice;\n            })\n            .catch(error => console.error('Error fetching the price:', error));\n    }\n\n    function closePopup() {\n        document.querySelector('.desktop-popup').style.display = 'none';\n        document.querySelector('.mobile-popup').style.display = 'none';\n        player.play(); \/\/ Allows resuming the video only after closing the popup\n    }\n});\n<\/script>\n\n\n\n<p>L\u2019utilisation de SQLite avec Python est extr\u00eamement pratique pour les applications n\u00e9cessitant une base de donn\u00e9es l\u00e9g\u00e8re, rapide et autonome. SQLite fait partie de la biblioth\u00e8que standard de Python et son int\u00e9gration est fort simple. Nous allons vous guider \u00e0 travers la cr\u00e9ation de tables et l\u2019ex\u00e9cution de diff\u00e9rentes op\u00e9rations de base de donn\u00e9es gr\u00e2ce \u00e0 des exemples concrets.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation et Connexion \u00e0 SQLite en Python<\/h3>\n\n\n\n<p>La premi\u00e8re \u00e9tape pour utiliser SQLite en Python est d&rsquo;importer le module <code>sqlite3<\/code> et de cr\u00e9er une connexion \u00e0 une base de donn\u00e9es. Si la base de donn\u00e9es sp\u00e9cifi\u00e9e n&rsquo;existe pas, SQLite la cr\u00e9era automatiquement.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import sqlite3\n\n# Cr\u00e9er une connexion \u00e0 la base de donn\u00e9es\nconn = sqlite3.connect('example.db')\n\n# Cr\u00e9er un curseur pour effectuer des op\u00e9rations sur la base de donn\u00e9es\ncursor = conn.cursor()<\/code><\/pre>\n\n \n\n<p>Si vous d\u00e9butez avec Python, il est \u00e9galement important de savoir <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-mac-2024-guide-complet\" title=\"installer Python sur Mac\">comment installer Python sur Mac<\/a> ou <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-windows-facilement\" title=\"comment installer Python sur Windows\">installer Python sur Windows<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9ation d&rsquo;une Table en SQLite<\/h3>\n\n\n\n<p>Apr\u00e8s avoir \u00e9tabli une connexion, l&rsquo;\u00e9tape suivante consiste \u00e0 cr\u00e9er une table. Utilisez une instruction SQL <code>CREATE TABLE<\/code> pour d\u00e9finir la structure de votre table, sp\u00e9cifiant les colonnes et leurs types de donn\u00e9es.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Cr\u00e9er une table\ncursor.execute('''CREATE TABLE employees (\n                     id INTEGER PRIMARY KEY,\n                     name TEXT NOT NULL,\n                     age INTEGER,\n                     department TEXT)''')\n\n# Sauvegarder (commit) les changements\nconn.commit()<\/code><\/pre>\n\n\n\n<p>Cette cr\u00e9ation de table en SQLite en Python est tr\u00e8s similaire aux concepts de bases de donn\u00e9es qu&rsquo;on retrouve dans d&rsquo;autres tutoriels sur <a href=\"https:\/\/wikiform.fr\/codespace\/introduction-aux-bases-de-donnees-sqlite-en-python\" title=\"Introduction aux bases de donn\u00e9es SQLite en Python\">SQLite<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Insertion de Donn\u00e9es dans la Table<\/h3>\n\n\n\n<p>Ins\u00e9rer des donn\u00e9es dans une table SQLite est aussi simple que d&rsquo;utiliser une instruction SQL <code>INSERT INTO<\/code>. Voici comment ins\u00e9rer un enregistrement dans la table <code>employees<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Ins\u00e9rer des donn\u00e9es dans la table\ncursor.execute(\"INSERT INTO employees (name, age, department) VALUES ('Alice', 30, 'HR')\")\n\n# Sauvegarder (commit) les changements\nconn.commit()<\/code><\/pre>\n\n\n\n<p>Pour des informations plus d\u00e9taill\u00e9es, consultez notre guide sur <a href=\"https:\/\/wikiform.fr\/codespace\/inserer-des-donnees-dans-sqlite-avec-python\" title=\"Inserer des donn\u00e9es dans SQLite avec Python\">l&rsquo;insertion de donn\u00e9es dans SQLite<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lecture des Donn\u00e9es depuis la Table<\/h3>\n\n\n\n<p>Utilisez une instruction SQL <code>SELECT<\/code> pour lire les donn\u00e9es de la table. Vous pouvez r\u00e9cup\u00e9rer toutes les colonnes ou seulement celles qui vous int\u00e9ressent, selon votre requ\u00eate SQL.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># S\u00e9lectionner toutes les donn\u00e9es\ncursor.execute(\"SELECT * FROM employees\")\n\n# R\u00e9cup\u00e9rer les r\u00e9sultats\nrows = cursor.fetchall()\n\n# Afficher les r\u00e9sultats\nfor row in rows:\n    print(row)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mise \u00e0 Jour des Donn\u00e9es<\/h3>\n\n\n\n<p>Pour mettre \u00e0 jour les donn\u00e9es existantes dans une table, employez une instruction SQL <code>UPDATE<\/code>. Cette instruction permet de modifier les valeurs des colonnes sp\u00e9cifiques de l&rsquo;enregistrement correspondant.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Mettre \u00e0 jour une ligne\ncursor.execute(\"UPDATE employees SET age = 31 WHERE name = 'Alice'\")\n\n# Sauvegarder (commit) les changements\nconn.commit()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Suppression des Donn\u00e9es<\/h3>\n\n\n\n<p>Pour supprimer des enregistrements dans une table, utilisez l&rsquo;instruction SQL <code>DELETE FROM<\/code>. Vous pouvez sp\u00e9cifier une condition pour cibler les enregistrements \u00e0 supprimer.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Supprimer une ligne\ncursor.execute(\"DELETE FROM employees WHERE name = 'Alice'\")\n\n# Sauvegarder (commit) les changements\nconn.commit()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion et Fermeture de la Connexion<\/h3>\n\n\n\n<p>Voil\u00e0, vous avez maintenant les bases pour cr\u00e9er, lire, mettre \u00e0 jour et supprimer des enregistrements dans une base de donn\u00e9es SQLite en utilisant Python. N&rsquo;oubliez pas de fermer la connexion \u00e0 la base de donn\u00e9es une fois que vous avez termin\u00e9 toutes vos op\u00e9rations.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Fermer la connexion \u00e0 la base de donn\u00e9es\nconn.close()<\/code><\/pre>\n\n  \n\n<p>La ma\u00eetrise de ces op\u00e9rations de base vous permettra de manipuler efficacement des bases de donn\u00e9es SQLite pour vos projets Python. Pour aller plus loin, vous pouvez explorer des fonctionnalit\u00e9s avanc\u00e9es comme les transactions, les contraintes d\u2019int\u00e9grit\u00e9, et les jointures de tables.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exemples Avanc\u00e9s de Manipulation de Tables<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Transactions en SQLite<\/h4>\n\n\n\n<p>Les transactions permettent d\u2019assurer l\u2019int\u00e9grit\u00e9 des donn\u00e9es en s\u2019assurant qu\u2019un ensemble d\u2019op\u00e9rations SQL soit ex\u00e9cut\u00e9 enti\u00e8rement ou pas du tout. Voici comment utiliser des transactions en SQLite :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>try:\n    # D\u00e9but de la transaction\n    conn.execute('BEGIN')\n    \n    # Ex\u00e9cuter plusieurs op\u00e9rations\n    cursor.execute(\"INSERT INTO employees (name, age, department) VALUES ('Bob', 28, 'Engineering')\")\n    cursor.execute(\"UPDATE employees SET department = 'HR' WHERE name = 'Alice'\")\n    \n    # Valider la transaction\n    conn.commit()\nexcept sqlite3.Error as e:\n    # Annuler la transaction en cas d'erreur\n    conn.rollback()\n    print(\"An error occurred:\", e)\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Contraintes d&rsquo;Int\u00e9grit\u00e9<\/h4>\n\n\n\n<p>Les contraintes d&rsquo;int\u00e9grit\u00e9 permettent de garantir la validit\u00e9 des donn\u00e9es dans la base de donn\u00e9es. Par exemple, une contrainte <code>UNIQUE<\/code> assure que toutes les valeurs dans une colonne sont uniques. Voici comment ajouter une telle contrainte :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Cr\u00e9er une table avec une contrainte UNIQUE\ncursor.execute('''CREATE TABLE departments (\n                     id INTEGER PRIMARY KEY,\n                     name TEXT UNIQUE NOT NULL)''')\n\n# Essayer d'ins\u00e9rer des valeurs dupliqu\u00e9es provoque une erreur d'int\u00e9grit\u00e9\ntry:\n    cursor.execute(\"INSERT INTO departments (name) VALUES ('HR')\")\n    cursor.execute(\"INSERT INTO departments (name) VALUES ('HR')\")\n    conn.commit()\nexcept sqlite3.IntegrityError as e:\n    print(\"Integrity error:\", e)\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Jointures de Tables<\/h4>\n\n\n\n<p>Les jointures permettent de combiner des donn\u00e9es de plusieurs tables en une seule requ\u00eate. Cela est tr\u00e8s utile pour travailler avec des bases de donn\u00e9es relationnelles. Voici un exemple de jointure entre les tables <code>employees<\/code> et <code>departments<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Supposons que nous ayons une table departments et que employees contient une colonne department_id\n\n# Cr\u00e9er la table departments\ncursor.execute('CREATE TABLE IF NOT EXISTS departments (id INTEGER PRIMARY KEY, name TEXT)')\n\n# Ins\u00e9rer un d\u00e9partement\ncursor.execute(\"INSERT INTO departments (name) VALUES ('HR')\")\n\n# Associer employees \u00e0 departments par department_id\ncursor.execute('ALTER TABLE employees ADD COLUMN department_id INTEGER')\n\n# Mettre \u00e0 jour l'employ\u00e9 Alice pour l'associer au d\u00e9partement RH\ncursor.execute(\"UPDATE employees SET department_id = 1 WHERE name = 'Alice'\")\n\n# Faire une jointure pour r\u00e9cup\u00e9rer les employ\u00e9s et leur d\u00e9partement\ncursor.execute('''SELECT employees.name, employees.age, departments.name as department\n                  FROM employees\n                  JOIN departments ON employees.department_id = departments.id''')\n\n# R\u00e9cup\u00e9rer et afficher les r\u00e9sultats\nrows = cursor.fetchall()\nfor row in rows:\n    print(row)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion sur les Tables SQLite en Python<\/h2>\n\n\n\n<p>Ce guide sur la <strong>Cr\u00e9ation de Tables SQLite en Python<\/strong> vous a pr\u00e9sent\u00e9 les bases n\u00e9cessaires pour manipuler des bases de donn\u00e9es SQLite avec aisance. En apprenant \u00e0 cr\u00e9er des tables, ins\u00e9rer des donn\u00e9es, effectuer des mises \u00e0 jour et des suppressions, et comprendre des fonctionnalit\u00e9s avanc\u00e9es comme les transactions, les contraintes d&rsquo;int\u00e9grit\u00e9, et les jointures, vous \u00eates maintenant arm\u00e9 pour int\u00e9grer SQLite dans vos applications Python. Pour des tutoriels plus d\u00e9taill\u00e9s et des exemples de code avanc\u00e9s, n&rsquo;h\u00e9sitez pas \u00e0 consulter notre section <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\">d&rsquo;apprentissage approfondi de Python<\/a>.<\/p>\n\n\n\n<a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9ation de Tables SQLite en Python est une comp\u00e9tence essentielle pour quiconque souhaite travailler avec des bases de donn\u00e9es locales dans ses projets Python. Gr\u00e2ce&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2905,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5859","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-tutoriels"],"acf":[],"_titre_de_la_formation":null,"_description_":null,"_objectifs_pedagogiques":null,"_programme_":null,"_url_de_limage":null,"_materiel_necessaire":null,"_modalites_devaluation_des_acquis":null,"_moyens_pedagogiques_et_techniques":null,"_accessibilite_":null,"_formateur_":null,"menu_order":0,"_links":{"self":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/comments?post=5859"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5859\/revisions"}],"predecessor-version":[{"id":5860,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5859\/revisions\/5860"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2905"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}