Maison  >  Article  >  développement back-end  >  Exemple de code montrant comment Python utilise la base de données MySQL

Exemple de code montrant comment Python utilise la base de données MySQL

黄舟
黄舟original
2017-05-21 13:31:481364parcourir

Cet article présente principalement l'exemple de code d'utilisation de la base de données mysql avec python L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner en guise de modèle. référence. Suivons l'éditeur pour y jeter un œil.

1 Installationmysql

Si vous êtes un utilisateur Windows, l'installation de mysql est très simple. Téléchargez directement le fichier d'installation et double-cliquez sur le fichier d'installation pour procéder étape par étape.

L'installation sous Linux peut être plus simple En plus de télécharger le package d'installation pour l'installation, mysql sera disponible dans l'entrepôt général Linux. une commande. Installation :

Ubuntudeepin

 >>sudo apt-get install mysql-server 
 >>Sudo apt-get install mysql-client

centOS/redhat

>>yum install mysql

Deuxièmement, installez MySQL-python

Pour permettre à Python de faire fonctionner MySQL, vous avez besoin du pilote MySQL-pythondriver, qui est un module essentiel pour que Python puisse faire fonctionner MySQL.

Téléchargez le fichier MySQL-python-1.2.5.zip et décompressez-le directement. Entrez dans le répertoire MySQL-python-1.2.5 :

>>python setup.py install

3. Test

Le test est très simple, vérifiez si le module MySQLdb peut être importé normalement.

fnngj@fnngj-H24X:~/pyse$ python 
Python 2.7.4 (default, Sep 26 2013, 03:20:56) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb

Il n'y a aucun message d'erreur indiquant que le module MySQLdb est introuvable, indiquant que l'installation est OK Avant de commencer à utiliser python pour faire fonctionner la base de données, nous devons revoir les opérations de base de mysql :

Quatre opérations de base de MySQL

$ mysql -u root -p (有密码时)
 
$ mysql -u root   (无密码时)
mysql> show databases; // 查看当前所有的数据库
+--------------------+
| Database      |
+--------------------+
| information_schema |
| csvt        |
| csvt04       |
| mysql       |
| performance_schema |
| test        |
+--------------------+
6 rows in set (0.18 sec)

mysql> use test;  //作用与test数据库
Database changed
mysql> show tables;  //查看test库下面的表
Empty set (0.00 sec)

//创建user表,name 和password 两个字段
mysql> CREATE TABLE user (name VARCHAR(20),password VARCHAR(20)); Query OK, 0 rows affected (0.27 sec)

//向user表内插入若干条数据
mysql> insert into user values('Tom','1321');
Query OK, 1 row affected (0.05 sec)

mysql> insert into user values('Alen','7875');
Query OK, 1 row affected (0.08 sec)

mysql> insert into user values('Jack','7455');
Query OK, 1 row affected (0.04 sec)

//查看user表的数据
mysql> select * from user;
+------+----------+
| name | password |
+------+----------+
| Tom | 1321   |
| Alen | 7875   |
| Jack | 7455   |
+------+----------+
3 rows in set (0.01 sec)

//删除name 等于Jack的数据
mysql> delete from user where name = 'Jack';
Query OK, 1 rows affected (0.06 sec)

//修改name等于Alen 的password 为 1111
mysql> update user set password='1111' where name = 'Alen';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0

//查看表内容
mysql> select * from user;
+--------+----------+
| name  | password |
+--------+----------+
| Tom  | 1321   |
| Alen  | 1111   |
+--------+----------+
3 rows in set (0.00 sec)

Cinq opérations de base de la base de données MySQL en Python

#coding=utf-8
import MySQLdb

conn= MySQLdb.connect(
    host='localhost',
    port = 3306,
    user='root',
    passwd='123456',
    db ='test',
    )
cur = conn.cursor()

#创建数据表
#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

#插入一条数据
#cur.execute("insert into student values('2','Tom','3 year 2 class','9')")


#修改查询条件的数据
#cur.execute("update student set class='3 year 1 class' where name = 'Tom'")

#删除查询条件的数据
#cur.execute("delete from student where age='9'")

cur.close()
conn.commit()
conn.close() 


>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd='123456',db ='test',)

Méthode Connect() Utilisée pour créer une connexion à la base de données , dans laquelle les paramètres peuvent être spécifiés : nom d'utilisateur, mot de passe, hôte et autres informations.

Ceci est juste connecté à la base de données. Pour faire fonctionner la base de données, vous devez créer un curseur.

>>> cur = conn.cursor()

Créez un curseur via la méthode curseur() sous la connexion de connexion à la base de données obtenue.

Copier le code Le code est le suivant :

>>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

Les instructions SQL pures peuvent être écrites via la méthode Cursor Cur Operation Execute(). Exploitez les données en écrivant des instructions SQL dans la méthodeexecute().

>>>cur.close()

cur.close() ferme le curseur

>>>conn.commit()

la méthode conn.commit() soumet des éléments et doit avoir cette méthode lors de l'insertion d'une donnée dans la base de données, sinon les données ne sont pas réellement insérées.

>>>conn.close()

Conn.close() ferme la connexion à la base de données

Six, Insérer des données

Par ce qui précède Il n'est pas pratique d'écrire des instructions SQL pures dans la méthodeexecute() pour insérer des données. Par exemple :

>>>cur.execute("insert into student values('2','Tom','3 year 2 class','9')")

Si je souhaite insérer de nouvelles données, je dois modifier la valeur dans cette instruction. Nous pouvons apporter les modifications suivantes :

#coding=utf-8
import MySQLdb

conn= MySQLdb.connect(
    host='localhost',
    port = 3306,
    user='root',
    passwd='123456',
    db ='test',
    )
cur = conn.cursor()

#插入一条数据
sqli="insert into student values(%s,%s,%s,%s)"
cur.execute(sqli,('3','Huhu','2 year 1 class','7'))

cur.close()
conn.commit()
conn.close()

Et si nous voulons insérer plusieurs valeurs dans le tableau de données en même temps ?

#coding=utf-8
import MySQLdb

conn= MySQLdb.connect(
    host='localhost',
    port = 3306,
    user='root',
    passwd='123456',
    db ='test',
    )
cur = conn.cursor()

#一次插入多条记录
sqli="insert into student values(%s,%s,%s,%s)"
cur.executemany(sqli,[
  ('3','Tom','1 year 1 class','6'),
  ('3','Jack','2 year 1 class','7'),
  ('3','Yaheng','2 year 2 class','7'),
  ])

cur.close()
conn.commit()
conn.close()

La méthodeexecutemany() peut insérer plusieurs valeurs à la fois et exécuter des instructions SQL uniques, mais les paramètres de la liste de paramètres sont exécutés à plusieurs reprises et la valeur de retour est le nombre des lignes concernées.

7. Interroger des données

Peut-être avez-vous essayé d'interroger la table de données en python via

>>>cur.execute("select * from student")

données dans le tableau, mais il n'a pas imprimé les données du tableau, ce qui était un peu décevant.

Voyons ce que donne cette déclaration

>>>aa=cur.execute("select * from student")
 
>>>print aa

5

Ce qu'elle obtient, c'est le nombre de données qu'il y a dans notre tableau. Alors, comment pouvons-nous obtenir les données dans le tableau ? Entrer la méthode python shell

>>> import MySQLdb
>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root',  passwd='123456',db ='test',)
>>> cur = conn.cursor()
>>> cur.execute("select * from student")
5L
>>> cur.fetchone()
(1L, 'Alen', '1 year 2 class', '6')
>>> cur.fetchone()
(3L, 'Huhu', '2 year 1 class', '7')
>>> cur.fetchone()
(3L, 'Tom', '1 year 1 class', '6')
...
>>>cur.scroll(0,'absolute')

fetchone() peut nous aider à obtenir les données dans le tableau, mais les données obtenues sont différentes à chaque fois que cur.fetchone() est exécuté. exécutez-le une fois, et le curseur Il se déplacera de la première donnée du tableau à la position de la donnée suivante, donc lorsque je l'exécuterai à nouveau, j'obtiendrai la deuxième donnée. La méthode

scroll(0,'absolute') peut positionner le curseur sur les premières données du tableau.

Vous n'obtenez toujours pas les résultats souhaités. Comment obtenir plusieurs données dans le tableau et les imprimer ?

#coding=utf-8
import MySQLdb

conn= MySQLdb.connect(
    host='localhost',
    port = 3306,
    user='root',
    passwd='123456',
    db ='test',
    )
cur = conn.cursor()

#获得表中有多少条数据
aa=cur.execute("select * from student")
print aa

#打印表中的多少数据
info = cur.fetchmany(aa)
for ii in info:
  print ii
cur.close()
conn.commit()
conn.close()

Grâce à l'impression précédente aa, nous savons qu'il y a 5 éléments de données dans la table actuelle. La méthode fetchmany() peut obtenir plusieurs éléments de données, mais le nombre d'éléments de données doit le faire. être spécifié via une boucle for Vous pouvez imprimer plusieurs éléments de données ! Les résultats d'exécution sont les suivants :

5
(1L, 'Alen', '1 year 2 class', '6')
(3L, 'Huhu', '2 year 1 class', '7')
(3L, 'Tom', '1 year 1 class', '6')
(3L, 'Jack', '2 year 1 class', '7')
(3L, 'Yaheng', '2 year 2 class', '7')
[Finished in 0.1s]

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