Maison > développement back-end > Tutoriel Python > Explication détaillée des étapes d'exploitation de la base de données SQLite en Python

Explication détaillée des étapes d'exploitation de la base de données SQLite en Python

黄舟
Libérer: 2017-06-18 11:22:13
original
2145 Les gens l'ont consulté

Cet article présente principalement la méthode d'exploitation de la base de données SQLite en Python. Il fournit une analyse plus détaillée de l'installation par Python du module de base de données SQLite et des techniques d'exploitation courantes pour la base de données SQLite. Les amis dans le besoin peuvent se référer à

Ceci. L'article explique les exemples. Découvrez comment Python exploite les bases de données SQLite. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Une brève introduction à SQLite

La base de données SQLite est une base de données intégrée très compacte logiciel de base de données open source , c'est-à-dire qu'il n'y a pas de processus de maintenance indépendant et que toute la maintenance provient du programme lui-même. Il s'agit d'un système de gestion de base de données relationnelle conforme à ACID. Sa cible de conception est intégrée et il a été utilisé dans de nombreux produits embarqués. Il occupe très peu de ressources. Dans les appareils embarqués, il ne peut nécessiter que quelques centaines de Ko de mémoire. assez. Il peut prendre en charge les systèmes d'exploitation courants tels que Windows/Linux/Unix et peut être combiné avec de nombreux langages de programmation, tels que Tcl, C#, PHP, Java, etc., ainsi qu'avec les interfaces ODBC. Il est également comparé aux deux interfaces ouvertes. mondes sources de Mysql et PostgreSQL En termes de systèmes de gestion de bases de données célèbres, sa vitesse de traitement est plus rapide que tous. La première version Alpha de SQLite est née en mai 2000. Cela fait maintenant 10 ans, et SQLite a également inauguré la sortie d'une version SQLite 3.

Installation et utilisation

1. Importez le module de base de données Python SQLITE

Après Python2. 5 , SQLite3 intégré, devient un module intégré, ce qui nous évite l'effort d'installation, il suffit de l'importer~


import sqlite3
Copier après la connexion

2. Créer / Ouvrir la base de données

Lors de l'appel de la fonction de connexion, spécifiez le nom de la bibliothèque. Si la base de données spécifiée existe, ouvrez la base de données directement. Si elle n'existe pas, créez-en une nouvelle et ouvrez-la.


cx = sqlite3.connect("E:/test.db")
Copier après la connexion

Vous pouvez également créer une base de données en mémoire.


con = sqlite3.connect(":memory:")
Copier après la connexion

3. Objet de connexion à la base de données

L'objet cx renvoyé lors de l'ouverture de la base de données est un objet de connexion à la base de données, qui peut Il existe les opérations suivantes :

① commit()--Soumission de transaction
② rollback()--Annulation de transaction
③ close()--Fermer une connexion à une base de données
④ curseur () --Créez un curseur

Concernant commit(), si le niveau d'isolation isolation_level est par défaut, vous devez utiliser cette commande pour chaque opération sur la base de données. Vous pouvez également définir isolation_level=None, de sorte que. cela devient un modèle de soumission automatique.

4.Utilisez le curseur pour interroger la base de données

Nous devons utiliser l'instruction SQL de l'objet curseur pour interroger la base de données et obtenir l'objet de requête . Définissez un curseur des manières suivantes.

cu=cx.cursor()

L'objet curseur a les opérations suivantes :

①execut()--exécute l'instruction SQL
②executemany--exécuter plusieurs instructions SQL
③ close()--fermer le curseur
④ fetchone()--prendre un enregistrement du résultat et pointer le curseur vers l'enregistrement suivant
⑤ fetchmany( ) --Récupérer plusieurs enregistrements du résultat
⑥ fetchall()--Récupérer tous les enregistrements du résultat
⑦ scroll()--Défilement du curseur

Créer une table<🎜. >

Copier le code Le code est le suivant :

cu.execute("créer un catalogue de tables (id

entier clé primaire,pid entier, name varchar( 10) UNIQUE, pseudo text NULL)")

L'instruction ci-dessus crée une table appelée catalog, qui a un identifiant de clé primaire, un pid et un nom. Le nom ne peut pas être répété et un La valeur par défaut du surnom est NULL.

2. Insérer des données

Veuillez faire attention à éviter l'écriture suivante :


# Never do this -- insecure 会导致注入攻击
pid=200
c.execute("... where pid = &#39;%s&#39;" % pid)
Copier après la connexion
L'approche correcte est la suivante. Si t n'est qu'une seule valeur, elle doit également être sous la forme t=(n,), car le tuple est immuable.


for t in[(0,10,&#39;abc&#39;,&#39;Yu&#39;),(1,20,&#39;cba&#39;,&#39;Xu&#39;)]:
  cx.execute("insert into catalog values (?,?,?,?)", t)
Copier après la connexion
Insérez simplement deux lignes de données, mais il faut rappeler qu'elles ne prendront effet qu'après leur soumission. Nous utilisons l'objet de connexion à la base de données cx pour. soumettre et valider l'opération de restauration.


cx.commit()
Copier après la connexion

Requête


cu.execute("select * from catalog")
Copier après la connexion
Pour extraire les données interrogées, utilisez la fonction fetch du curseur, telle que :


In [10]: cu.fetchall()
Out[10]: [(0, 10, u&#39;abc&#39;, u&#39;Yu&#39;), (1, 20, u&#39;cba&#39;, u&#39;Xu&#39;)]
Copier après la connexion
Si nous utilisons cu.fetchone(), le premier dans la liste sera renvoyée en premier. Si l'article est à nouveau utilisé, revenez au deuxième article et procédez dans l'ordre

4. Remarque, modification Soumettre les données plus tard


5 Supprimer

In [12]: cu.execute("update catalog set name=&#39;Boy&#39; where id = 0")
In [13]: cx.commit()
Copier après la connexion

6. . Utilisez le chinois


Veuillez d'abord vous assurer que l'encodage par défaut de votre IDE ou de votre système est utf-8, et ajoutez u
cu.execute("delete from catalog where id = 1") 
cx.commit()
Copier après la connexion

avant le chinois.

x=u'鱼'
cu.execute("update catalog set name=? where id = 0",x)
cu.execute("select * from catalog")
cu.fetchall()
[(0, 10, u'\u9c7c', u'Yu'), (1, 20, u'cba', u'Xu')]
Copier après la connexion

如果要显示出中文字体,那需要依次打印出每个字符串


In [26]: for item in cu.fetchall():
  ....:   for element in item:
  ....:     print element,
  ....:   print
  ....: 
0 10 鱼 Yu
1 20 cba Xu
Copier après la connexion

7.Row类型

Row提供了基于索引和基于名字大小写敏感的方式来访问列而几乎没有内存开销。 原文如下:

sqlite3.Row provides both index-based and case-insensitive name-based access to columns with almost no memory overhead. It will probably be better than your own custom dictionary-based approach or even a db_row based solution.

Row对象的详细介绍

class sqlite3.Row
A Row instance serves as a highly optimized row_factory for Connection objects. It tries to mimic a tuple in most of its features.
It supports mapping access by column name and index, iteration, representation, equality testing and len().
If two Row objects have exactly the same columns and their members are equal, they compare equal.
Changed in version 2.6: Added iteration and equality (hashability).
keys()
This method returns a tuple of column names. Immediately after a query, it is the first member of each tuple in Cursor.description.
New in version 2.6.

下面举例说明


In [30]: cx.row_factory = sqlite3.Row
In [31]: c = cx.cursor()
In [32]: c.execute(&#39;select * from catalog&#39;)
Out[32]: <sqlite3.Cursor object at 0x05666680>
In [33]: r = c.fetchone()
In [34]: type(r)
Out[34]: <type &#39;sqlite3.Row&#39;>
In [35]: r
Out[35]: <sqlite3.Row object at 0x05348980>
In [36]: print r
(0, 10, u&#39;\u9c7c&#39;, u&#39;Yu&#39;)
In [37]: len(r)
Out[37]: 4
In [39]: r[2]      #使用索引查询
Out[39]: u&#39;\u9c7c&#39;
In [41]: r.keys()
Out[41]: [&#39;id&#39;, &#39;pid&#39;, &#39;name&#39;, &#39;nickname&#39;]
In [42]: for e in r:
  ....:   print e,
  ....: 
0 10 鱼 Yu
Copier après la connexion

使用列的关键词查询


In [43]: r[&#39;id&#39;]
Out[43]: 0
In [44]: r[&#39;name&#39;]
Out[44]: u&#39;\u9c7c&#39;
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal