Explication détaillée de pymysql pour la programmation de base de données Python


avant-propos

Avant d'apprendre, assurez-vous d'installer MySQL et de démarrer les services associés. Pour la méthode d'installation de MySQL et vérifiez le mot de passe initial, consultez la première partie de l'article lié ci-dessous :

https://blog.csdn.net/youngwyj/article/details/124293362?spm=1001.2014.3001.5502


1. Installation de pymsql

Utilisez la commande suivante directement dans l'environnement python3 :

pip install pymsql
#或者
pip3 install pymysql

Une fois l'installation terminée, vous pouvez utiliser la commande suivante pour afficher :

pip list | grep PyMySQL 
#注意大小写

Le résultat est le suivant :
insérez la description de l'image ici


Deuxièmement, connectez-vous à la base de données

pymysql utilise la fonction pymsql.connect() pour se connecter à la base de données, et ses paramètres communs sont les suivants :

paramètre illustrer
DSN Nom de la source de données, étant donné que ce paramètre indique la dépendance de la base de données
hôte=Aucun Adresse de connexion à la base de données
utilisateur=Aucun nom d'utilisateur de la base de données
mot de passe='' mot de passe de l'utilisateur de la base de données
base de données=Aucun Le nom de la base de données à laquelle se connecter
port=3306 Numéro de port, la valeur par défaut est 3306
charset='' Le codage de caractères de la base de données à connecter (vous pouvez utiliser \s pour le visualiser après vous être connecté à mysql dans le terminal, comme indiqué dans la figure ci-dessous)
connect_timeout=10 Le délai de connexion à la base de données, la valeur par défaut est 10
port=3306 Numéro de port, la valeur par défaut est 3306

insérez la description de l'image ici
Après vous être connecté à la base de données, vous devez créer un objet curseur. Le module exécutera l'instruction sql et obtiendra les résultats de la requête via l'objet curseur, puis affichera directement chaque méthode via le code.
Exemple:

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在这里输入用户名
    password='888888',     #在这里输入密码
    charset='utf8mb4' 
    ) #连接数据库

cursor = db.cursor() #创建游标对象

sql = 'show databases' #sql语句

cursor.execute(sql)  #执行sql语句

one = cursor.fetchone()  #获取一条数据
print('one:',one)

many = cursor.fetchmany(3) #获取指定条数的数据,不写默认为1
print('many:',many)

all = cursor.fetchall() #获取全部数据
print('all:',all)

cursor.close()  
db.close()  #关闭数据库的连接

résultat de l'opération :

one: ('coldbox',)
many: (('coldboxtest',), ('db_student',), ('information_schema',))
all: (('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))

On peut voir à partir des résultats que les valeurs de retour de fetchone(), fetchmany(size) et fetchall() sont des tuples, mais fetchone() renvoie un seul tuple, et les deux autres tuples de retour set.


3. Créer et gérer une base de données

Exemples d'instructions SQL qui utilisent des objets curseur pour exécuter la création et la suppression de base de données :

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在这里输入用户名
    password='888888',     #在这里输入密码
    charset='utf8mb4' 
    )

cursor = db.cursor() #创建游标对象

try:

    sql = 'show databases' 
    cursor.execute(sql)
    print('未创建数据库前:',cursor.fetchall()) #获取创建数据库前全部数据库

    dbname = 'justtest'
    sql = 'create database if not exists %s'%(dbname) #创建数据库
    cursor.execute(sql)
    sql = 'show databases' 
    cursor.execute(sql)
    print('创建新的数据库后:',cursor.fetchall()) #获取创建数据库后全部数据库

    sql = 'drop database if exists %s'%(dbname) #删除数据库
    cursor.execute(sql)
    sql = 'show databases' 
    cursor.execute(sql)
    print('删除新的数据库后:',cursor.fetchall()) #获取删除数据库后全部数据库

except Exception as e:
    print(e)
    db.rollback()  #回滚事务

finally:
    cursor.close() 
    db.close()  #关闭数据库连接

résultat de l'opération :

未创建数据库前: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
创建新的数据库后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('justtest',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
删除新的数据库后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))

Quatrièmement, créer et gérer des tables

Exemples d'instructions SQL qui utilisent des objets curseur pour exécuter la création et la gestion de table :

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在这里输入用户名
    password='888888',     #在这里输入密码
    charset='utf8mb4',
    database='justtest'     #指定操作的数据库
    )

cursor = db.cursor() #创建游标对象

try:

    tableName = 'user'
    sql = 'create table  %s (id varchar(20) not null, name varchar(20) not null, primary key(id))'%(tableName) 
    cursor.execute(sql)     #执行sql语句,创建表

    sql = 'show tables'
    cursor.execute(sql)
    print('显示创建的表:',cursor.fetchall())  #显示创建的表


    sql = 'desc %s'%(tableName) 
    cursor.execute(sql)
    print('显示表结构:',cursor.fetchall())  #显示表结构

except Exception as e:
    print(e)
    db.rollback()  #回滚事务

finally:
    cursor.close() 
    db.close()  #关闭数据库连接

résultat de l'opération :

显示创建的表: (('user',),)
显示表结构: (('id', 'varchar(20)', 'NO', 'PRI', None, ''), ('name', 'varchar(20)', 'NO', '', None, ''))

Résumer

Pour les opérations telles que la modification de la structure de la table, l'insertion, l'interrogation et la suppression de données, c'est à peu près la même chose que les opérations ci-dessus, principalement pour l'écriture d'instructions sql, qui ne seront pas décrites ici.
Processus global :
se connecter à la base de données -> créer un objet curseur -> écrire une instruction SQL -> exécuter une instruction SQL -> obtenir le résultat -> fermer la connexion à la base de données

Paramètres communs de la fonction Connect() :

paramètre illustrer
DSN Nom de la source de données, étant donné que ce paramètre indique la dépendance de la base de données
hôte=Aucun Adresse de connexion à la base de données
utilisateur=Aucun nom d'utilisateur de la base de données
mot de passe='' mot de passe de l'utilisateur de la base de données
base de données=Aucun Le nom de la base de données à laquelle se connecter
port=3306 Numéro de port, la valeur par défaut est 3306
charset='' Le codage de caractères de la base de données à connecter (vous pouvez utiliser \s pour le visualiser après vous être connecté à mysql dans le terminal, comme indiqué dans la figure ci-dessous)
connect_timeout=10 Le délai de connexion à la base de données, la valeur par défaut est 10
port=3306 Numéro de port, la valeur par défaut est 3306

Un résumé des méthodes de l'objet de connexion renvoyé par la fonction connect() :

nom de la méthode illustrer
fermer() Fermer la connexion à la base de données
commettre() valider la transaction
retour en arriere() transaction de restauration
le curseur() Obtenez l'objet curseur, utilisez la base de données, comme effectuer des opérations DML, appeler des procédures stockées, etc.

Méthodes de l'objet curseur :

nom de la méthode illustrer
callproc(procname,[,parameters]) L'appel de procédures stockées nécessite la prise en charge de la base de données
fermer() fermer le curseur actuel
exécuter(opération,[,paramètres]) Exécuter des opérations de base de données, des instructions sql ou des commandes de base de données
executemany(opération, seq_of_params) pour les opérations en vrac
récupérer() Obtenir l'enregistrement suivant dans le jeu de résultats de la requête
récupérer plusieurs (taille) Obtenir le nombre d'enregistrements spécifié
récupérer() Obtenir tous les enregistrements dans le jeu de résultats de la requête
ensemble suivant() Passer au prochain jeu de données disponible
taille de tableau Spécifie le nombre de lignes récupérées à l'aide de fetchmany(), la valeur par défaut est 1
setinputsizes(taille) Définir la taille de la zone mémoire allouée lorsque la méthode execute*() est appelée
setoutputsizes(taille) Définissez la taille du tampon de colonne, particulièrement utile pour les grandes colonnes de données

Je suppose que tu aimes

Origine blog.csdn.net/youngwyj/article/details/124699636
conseillé
Classement