{"id":5857,"date":"2024-08-29T08:14:15","date_gmt":"2024-08-29T08:14:15","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/creation-de-bases-de-donnees-sqlite-en-python\/"},"modified":"2024-08-29T08:14:18","modified_gmt":"2024-08-29T08:14:18","slug":"creation-de-bases-de-donnees-sqlite-en-python","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/creation-de-bases-de-donnees-sqlite-en-python\/","title":{"rendered":"10.2 Cr\u00e9ation de Bases de Donn\u00e9es SQLite en Python"},"content":{"rendered":"\u00ab\u00a0`html\n\n<p><strong>Cr\u00e9ation de Bases de Donn\u00e9es SQLite en Python<\/strong> est une comp\u00e9tence essentielle pour tout d\u00e9veloppeur Python souhaitant g\u00e9rer efficacement les donn\u00e9es dans ses applications. SQLite est une biblioth\u00e8que int\u00e9gr\u00e9e dans Python qui permet de g\u00e9rer des bases de donn\u00e9es l\u00e9g\u00e8res et performantes. Dans ce tutoriel, nous allons explorer la <strong>cr\u00e9ation de bases de donn\u00e9es SQLite en Python<\/strong>, ainsi que quelques op\u00e9rations courantes comme l&rsquo;insertion, la mise \u00e0 jour et la suppression de donn\u00e9es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 <strong>SQLite et 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\/583418120?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>SQLite est un moteur de base de donn\u00e9es relationnelle l\u00e9ger et autonome, parfait pour les applications de bureau et les petites applications web. Python int\u00e8gre de fa\u00e7on native le module <code>sqlite3<\/code>, facilitant la gestion des bases de donn\u00e9es SQLite directement dans vos scripts Python.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation et Configuration<\/h3>\n\n\n\n<p>Le module <code>sqlite3<\/code> est int\u00e9gr\u00e9 \u00e0 Python, il n&rsquo;est donc pas n\u00e9cessaire de l&rsquo;installer s\u00e9par\u00e9ment. Assurez-vous simplement que Python est install\u00e9 sur votre machine :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-shell\"><code>python --version<\/code><\/pre>\n\n\n\n<p>Vous devriez voir la version de Python install\u00e9e s&rsquo;afficher. Si Python est correctement install\u00e9, nous pouvons passer \u00e0 la cr\u00e9ation de notre base de donn\u00e9es SQLite.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9ation d&rsquo;une Base de Donn\u00e9es<\/h3>\n\n\n\n<p>Cr\u00e9ons une base de donn\u00e9es SQLite et une table pour stocker des informations. Voici un exemple simple :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import sqlite3\n\n# Connexion \u00e0 la base de donn\u00e9es (ou cr\u00e9ation si elle n'existe pas)\nconn = sqlite3.connect('example.db')\n\n# Cr\u00e9ation d'un curseur\ncur = conn.cursor()\n\n# Cr\u00e9ation d'une table\ncur.execute('''CREATE TABLE IF NOT EXISTS students\n               (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')\n\n# Sauvegarde des modifications et fermeture de la connexion\nconn.commit()\nconn.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Insertion de Donn\u00e9es<\/h3>\n\n\n\n<p>Maintenant que notre table est cr\u00e9\u00e9e, nous pouvons ins\u00e9rer des donn\u00e9es dedans. Voici un exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Connexion \u00e0 la base de donn\u00e9es\nconn = sqlite3.connect('example.db')\ncur = conn.cursor()\n\n# Insertion de donn\u00e9es\ncur.execute(\"INSERT INTO students (name, age) VALUES ('John Doe', 20)\")\ncur.execute(\"INSERT INTO students (name, age) VALUES ('Jane Smith', 22)\")\n\n# Sauvegarde des modifications et fermeture de la connexion\nconn.commit()\nconn.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Lecture de Donn\u00e9es<\/h3>\n\n\n\n<p>Pour lire les donn\u00e9es de notre table, nous allons utiliser la m\u00e9thode <code>SELECT<\/code>. Voici comment :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Connexion \u00e0 la base de donn\u00e9es\nconn = sqlite3.connect('example.db')\ncur = conn.cursor()\n\n# Lecture des donn\u00e9es\ncur.execute(\"SELECT * FROM students\")\nrows = cur.fetchall()\n\n# Affichage des donn\u00e9es\nfor row in rows:\n    print(row)\n\nconn.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mise \u00e0 Jour des Donn\u00e9es<\/h3>\n\n\n\n<p>Nous pouvons aussi mettre \u00e0 jour les donn\u00e9es existantes. Voici un exemple pour changer le nom d&rsquo;un \u00e9tudiant :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Connexion \u00e0 la base de donn\u00e9es\nconn = sqlite3.connect('example.db')\ncur = conn.cursor()\n\n# Mise \u00e0 jour des donn\u00e9es\ncur.execute(\"UPDATE students SET name = 'John Smith' WHERE name = 'John Doe'\")\n\n# Sauvegarde des modifications et fermeture de la connexion\nconn.commit()\nconn.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Suppression de Donn\u00e9es<\/h3>\n\n\n\n<p>Pour supprimer des donn\u00e9es, nous utiliserons la commande <code>DELETE<\/code>. Voici comment :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Connexion \u00e0 la base de donn\u00e9es\nconn = sqlite3.connect('example.db')\ncur = conn.cursor()\n\n# Suppression de donn\u00e9es\ncur.execute(\"DELETE FROM students WHERE name = 'Jane Smith'\")\n\n# Sauvegarde des modifications et fermeture de la connexion\nconn.commit()\nconn.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Gestion des Erreurs<\/h3>\n\n\n\n<p>Il est toujours conseill\u00e9 de g\u00e9rer les erreurs potentielles lors de l&rsquo;interaction avec une base de donn\u00e9es. Voici un exemple de gestion d&rsquo;erreurs avec SQLite :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import sqlite3\n\ntry:\n    conn = sqlite3.connect('example.db')\n    cur = conn.cursor()\n    \n    # Essayons de lire une table qui n'existe pas\n    cur.execute(\"SELECT * FROM non_existent_table\")\nexcept sqlite3.Error as e:\n    print(f\"Une erreur s'est produite: {e}\")\nfinally:\n    conn.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Utiliser SQLite dans un Projet R\u00e9el<\/h3>\n\n\n\n<p>Pour illustrer l&rsquo;utilisation de SQLite dans un projet r\u00e9el, imaginons une application de gestion de livres. Nous allons cr\u00e9er une base de donn\u00e9es pour stocker les informations des livres et permettre les op\u00e9rations CRUD (Cr\u00e9er, Lire, Mettre \u00e0 jour, Supprimer) :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code># Connexion \u00e0 la base de donn\u00e9es\nconn = sqlite3.connect('library.db')\ncur = conn.cursor()\n\n# Cr\u00e9ation de la table\ncur.execute('''CREATE TABLE IF NOT EXISTS books\n               (id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER)''')\n\n# Insertion de livres\ncur.execute(\"INSERT INTO books (title, author, year) VALUES ('1984', 'George Orwell', 1949)\")\ncur.execute(\"INSERT INTO books (title, author, year) VALUES ('To Kill a Mockingbird', 'Harper Lee', 1960)\")\n\n# Lecture des livres\ncur.execute(\"SELECT * FROM books\")\nrows = cur.fetchall()\nfor row in rows:\n    print(row)\n\n# Mise \u00e0 jour d'un livre\ncur.execute(\"UPDATE books SET year = 1950 WHERE title = '1984'\")\n\n# Suppression d'un livre\ncur.execute(\"DELETE FROM books WHERE title = 'To Kill a Mockingbird'\")\n\nconn.commit()\nconn.close()\n<\/code><\/pre>\n\n\n\n<p>En continuant \u00e0 explorer SQLite, vous pouvez \u00e9galement voir comment lire des donn\u00e9es depuis SQLite en Python pour des affichages conditionnels. Pour cela, consultez notre article sur <a href=\"https:\/\/wikiform.fr\/codespace\/lecture-conditionnelle-dans-sqlite-avec-python\">lecture conditionnelle dans SQLite avec Python<\/a>. Vous voudrez en savoir plus sur l&rsquo;insertion de donn\u00e9es dans SQLite, retrouvez notre guide complet sur <a href=\"https:\/\/wikiform.fr\/codespace\/inserer-des-donnees-dans-sqlite-avec-python\">ins\u00e9rer des donn\u00e9es dans SQLite avec Python<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>La <strong>cr\u00e9ation de bases de donn\u00e9es SQLite en Python<\/strong> est une technique puissante qui peut consid\u00e9rablement augmenter l&rsquo;efficacit\u00e9 de vos applications. Avec SQLite, vous pouvez g\u00e9rer des donn\u00e9es de mani\u00e8re l\u00e9g\u00e8re et performante sans n\u00e9cessiter un serveur de base de donn\u00e9es lourd. N&rsquo;h\u00e9sitez pas \u00e0 continuer votre exploration et \u00e0 int\u00e9grer SQLite dans vos projets Python pour une gestion optimale des donn\u00e9es. Pour apprendre plus sur SQLite et Python, consultez nos autres articles et tutoriels disponibles sur notre site. Par exemple, vous pourriez vouloir approfondir votre compr\u00e9hension de l&rsquo;outil par la <a href=\"https:\/\/wikiform.fr\/codespace\/creation-de-tables-sqlite-en-python-guide\">cr\u00e9ation de tables SQLite en Python<\/a> ou encore apprendre \u00e0 <a href=\"https:\/\/wikiform.fr\/codespace\/creation-de-bases-de-donnees-sqlite-en-python\">cr\u00e9er des bases de donn\u00e9es SQLite en Python<\/a>.<\/p>\n\n\n\n<a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/wikiform.fr\/codespace\/wp-content\/uploads\/2024\/07\/learnify-formation-PYTHON-offre-50.gif\" loading=\"lazy\" alt=\"Learnify Formation Python Offre 50%\" title=\"\"><\/a>\n\n\u00ab\u00a0`","protected":false},"excerpt":{"rendered":"<p>\u00ab\u00a0`html Cr\u00e9ation de Bases de Donn\u00e9es SQLite en Python est une comp\u00e9tence essentielle pour tout d\u00e9veloppeur Python souhaitant g\u00e9rer efficacement les donn\u00e9es dans ses applications&#8230;.<\/p>\n","protected":false},"author":4,"featured_media":2904,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5857","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\/5857","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=5857"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5857\/revisions"}],"predecessor-version":[{"id":5858,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5857\/revisions\/5858"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2904"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}