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
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")
Vous pouvez également créer une base de données en mémoire.
con = sqlite3.connect(":memory:")
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 (identier 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. Veuillez faire attention à éviter l'écriture suivante :# Never do this -- insecure 会导致注入攻击 pid=200 c.execute("... where pid = '%s'" % pid)
for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]: cx.execute("insert into catalog values (?,?,?,?)", t)
cx.commit()
Requête
cu.execute("select * from catalog")
In [10]: cu.fetchall() Out[10]: [(0, 10, u'abc', u'Yu'), (1, 20, u'cba', u'Xu')]
4. Remarque, modification Soumettre les données plus tard
5 Supprimer
In [12]: cu.execute("update catalog set name='Boy' where id = 0") In [13]: cx.commit()
6. . Utilisez le chinois
cu.execute("delete from catalog where id = 1") cx.commit()
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')]
如果要显示出中文字体,那需要依次打印出每个字符串
In [26]: for item in cu.fetchall(): ....: for element in item: ....: print element, ....: print ....: 0 10 鱼 Yu 1 20 cba Xu
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('select * from catalog') Out[32]: <sqlite3.Cursor object at 0x05666680> In [33]: r = c.fetchone() In [34]: type(r) Out[34]: <type 'sqlite3.Row'> In [35]: r Out[35]: <sqlite3.Row object at 0x05348980> In [36]: print r (0, 10, u'\u9c7c', u'Yu') In [37]: len(r) Out[37]: 4 In [39]: r[2] #使用索引查询 Out[39]: u'\u9c7c' In [41]: r.keys() Out[41]: ['id', 'pid', 'name', 'nickname'] In [42]: for e in r: ....: print e, ....: 0 10 鱼 Yu
使用列的关键词查询
In [43]: r['id'] Out[43]: 0 In [44]: r['name'] Out[44]: u'\u9c7c'
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!