Python est livré avec une base de données relationnelle légèreSQLite. Cette base de données utilise le langage SQL. En tant que base de données principale, SQLite peut être utilisé avec Python pour créer des sites Web ou créer des outils nécessitant le stockage de données. SQLite est également largement utilisé dans d'autres domaines, tels que le HTML5 et les terminaux mobiles. sqlite3 dans la bibliothèque standard Python fournit une interface vers cette base de données.
Je vais créer une base de données relationnelle simple pour stocker les catégories de livres et les prix d'une librairie. La base de données contient deux tables : la catégorie est utilisée pour enregistrer la classification et le livre est utilisé pour enregistrer des informations sur un certain livre. Un livre appartient à une certaine catégorie, donc le livre a une clé étrangère (étranger clé), qui pointe vers l'identifiant de clé primaire de la table de catégorie.
Création de la base de données
Je vais d'abord créer la base de données et les tables de la base de données. Après avoir utilisé connect() pour me connecter à la base de données, je peux exécuter la commande SQL en positionnant le curseur :
# By Vamei import sqlite3 # test.db is a file in the working directory. conn = sqlite3.connect("test.db") c = conn.cursor() # create tables c.execute('''CREATE TABLE category (id int primary key, sort int, name text)''') c.execute('''CREATE TABLE book (id int primary key, sort int, name text, price real, category int, FOREIGN KEY (category) REFERENCES category(id))''') # save the changes conn.commit() # close the connection with the database conn.close()
La base de données SQLite est sur un disque de fichiers , comme test.db ci-dessus, afin que la base de données entière puisse être facilement déplacée ou copiée. test.db n'existe pas au départ, donc SQLite créera automatiquement un nouveau fichier.
À l'aide de la commandeexecute(), j'ai exécuté deux commandes SQL pour créer deux tables dans la base de données. Après la création, enregistrez et déconnectez-vous de la base de données.
Insérer des données
La base de données et les tables sont créées ci-dessus, et la structure abstraite de la base de données est établie. Ce qui suit insérera des données dans la même base de données :
# By Vamei import sqlite3 conn = sqlite3.connect("test.db") c = conn.cursor() books = [(1, 1, 'Cook Recipe', 3.12, 1), (2, 3, 'Python Intro', 17.5, 2), (3, 2, 'OS Intro', 13.6, 2), ] # execute "INSERT" c.execute("INSERT INTO category VALUES (1, 1, 'kitchen')") # using the placeholder c.execute("INSERT INTO category VALUES (?, ?, ?)", [(2, 2, 'computer')]) # execute multiple commands c.executemany('INSERT INTO book VALUES (?, ?, ?, ?, ?)', books) conn.commit() conn.close()
L'insertion de données peut également utiliser execute() pour exécuter une instruction SQL complète. Pour les paramètres des instructions SQL, utilisez "?" comme symbole de remplacement et donnez des valeurs spécifiques dans les paramètres suivants. Vous ne pouvez pas utiliser la chaîne formatée de Python, telle que "%s", car cette utilisation est vulnérable aux attaques par injection SQL.
Je peux également utiliser la méthodeexecutemany() pour effectuer plusieurs insertions et ajouter plusieurs enregistrements. Chaque enregistrement est un élément du tableau, comme les éléments du tableau books ci-dessus.
Requête
Après avoir exécuté l'instruction de requête, Python renverra une zone répétée contenant plusieurs enregistrements obtenus par la requête. Vous pouvez lire en boucle ou utiliser les méthodes fetchone() et fetchall() fournies par sqlite3 pour lire les enregistrements :
# By Vamei import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() # retrieve one record c.execute('SELECT name FROM category ORDER BY sort') print(c.fetchone()) print(c.fetchone()) # retrieve all records as a list c.execute('SELECT * FROM book WHERE book.category=1') print(c.fetchall()) # iterate through the records for row in c.execute('SELECT name, price FROM book ORDER BY sort'): print(row)
Mettre à jour et supprimer
Vous pouvez mettre à jour un enregistrement ou supprimer un enregistrement :
# By Vamei conn = sqlite3.connect("test.db") c = conn.cursor() c.execute('UPDATE book SET price=? WHERE id=?',(1000, 1)) c.execute('DELETE FROM book WHERE id=2') conn.commit() conn.close()
Vous pouvez également supprimer directement l'intégralité du tableau :
c.execute('DROP TABLE book')
Si test.db est supprimé, toute la base de données sera supprimée.
Résumé
sqlite3 n'est qu'une interface vers SQLite. Si vous souhaitez utiliser efficacement la base de données SQLite, vous devez acquérir davantage de connaissances sur les bases de données relationnelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!