Maison >développement back-end >Tutoriel Python >Explication détaillée de la méthode d'application de la base de données Python sqlite3

Explication détaillée de la méthode d'application de la base de données Python sqlite3

高洛峰
高洛峰original
2017-03-23 17:05:152027parcourir

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.

Explication détaillée de la méthode dapplication de la base de données Python sqlite3

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn