Maison  >  Article  >  base de données  >  Introduction à la pile complète Python à la base de données MySQL

Introduction à la pile complète Python à la base de données MySQL

coldplay.xixi
coldplay.xixiavant
2020-12-17 10:38:482212parcourir

Tutoriel MySQLBase de données d'explications complètes de la pile Python

Introduction à la pile complète Python à la base de données MySQL

Recommandé (gratuit) : Tutoriel MySQL

Trois aspects principaux :

1.Commande du terminal Linux

2.Instruction MySQL

3.Appel Python

Commande terminal :

vi                                                                                                                                                                              >                                                                                                                                            pour obtenir les autorisations root

sudo apt-get install python3-pip Installez pip3

sudo pip3 install pymysql Installez mysql

sudo apt-get install mysql-server Installer le serveur

Sudo apt-get install mysql-client Installer le client Duan Sudo APT-GET UPDATE Liste de lecture Enregistrer dans/var/lib/APT/List /init.d/ Statut mysql Statut de la requête

sudo /etc/init.d/mysql stop Arrêter le service

sudo /etc/init.d/mysql restart Redémarrer le service

sudo /etc/ init.d/mysql reload Recharger

mysql -h adresse de l'hôte -u nom d'utilisateur -p mot de passe Lien mysql

Modifier le jeu de caractères par défaut de mysql :

Sudo -I 1. Obtenez root

nom du fichier chmod 644 2. Modifiez les autorisations du fichier

CD ETC/MySQL.CONF.D 3. Entrez le texte de configuration Répertoire

CP ETC/MSQL.CNF/MySQLD.CNF.BAK 4. Sauvegarde

Subl mysqld.cnf 5.vi fichier open source

[mysqld] Catalogue

Character_set_server = utf8                                                                                                                                                                                                             🎜>

Sauvegarde des données :

Paramètres :

                                     1. Sauvegarder toutes les bibliothèques

Nom de la bibliothèque                                                                                         . Sauvegarder une seule bibliothèque

-b library 1 library. 2. 3. Sauvegardez plusieurs bibliothèques

Nom de la bibliothèque Tableau 1 2 ... 4. Sauvegarde de la table spécifiée de la bibliothèque

Récupération de données :

mysql -uroot -p & lt; 1. Restaurez la base de données de sauvegarde

mysql -uroot -p –one-database Nom de la base de données cible 7c6f7d33ffaf63f6d4fb72bd9a1a6e3e> importer pyMySQL installer mysql-python

installation du framework sqlalchemy :

En ligne : sudo pip3 install sqlalchemy

Hors ligne :

$ tar -zxvf SQLAlchemy-1.2.10.tar.gz

$ cd SQLAlchemy-1.2.10

$ sudo python3 setup.py install

Vérification :

$ python3

                                                                                            . module d'importation

(db = pymysql.connect (...)) 1. Établir une connexion à la base de données

c = db.cursor ()) 2. Créer un objet curseur

C.Execute ("INSERT ...") 3. Méthode de conversion :

DB.Commit () 4. Soumettre à la base de données

C.Close () 5. Fermer l'objet curseur

db.close()                                                                                                          

7.objet connect :

db = pymysql.connect (liste de paramètres)

1. host : adresse de l'hôte, localhost

2. port : numéro de port, par défaut 3306

3. utilisateur : nom d'utilisateur

4. mot de passe : mot de passe

5. base de données : bibliothèque

6. Charset : Méthode d'encodage, il est recommandé d'utiliser utf8

8.Méthode de l'objet de connexion :

Objet de connexion à la base de données (db)

1. db.close() ferme la connexion

2. db.commit() la soumet à la base de données pour exécution

3. db. rollback() renvoie Roll

4. cur = db.cursor() renvoie l'objet curseur, utilisé pour exécuter des commandes SQL spécifiques

9.Méthodes de l'objet curseur :

Méthodes de l'objet curseur (cur)

1. cur.execute(commande sql, [list]) Exécuter la commande SQL

2. cur.close() Fermer L'objet curseur

3. Cur.Fetchone () Récupère les premières données de l'ensemble de résultats de la requête

((enregistrement 1),)

4. Cur.fetchmany (n ) Obtenir n enregistrements

                                                                                                                                                 ' 's ((Enregistrement 1), (Enregistrement 2))

5. cur.fetchall() pour obtenir tous les enregistrements

ORM : orm (Object Relation Mapping) Définition : Mapper le modèle objet à la base de données MySQL

Commande SQL :

  • /var/ lib/mysql                                                                                                                                                                                                                                                                                                   pour être interrogé pour la transaction de validation

  • commencer ;                                                                                                                                                 Ouverture de la transaction

    commit ;                                                                               >
  • restauration ;                                                                                                                    Directement entrez dans le terminal
  • afficher les bases de données ; 🎜>créer le nom de la bibliothèque de base de données ;                                           
  • créer un jeu de caractères de nom de bibliothèque de base de données utf8 ;                       Afficher le jeu de caractères de la bibliothèque

  • sélectionner la base de données ();
  • utiliser le nom de la bibliothèque ;                                             

    supprimer le nom de la bibliothèque de la base de données ;                                              Afficher la table existante
  • créer une table nom de la table (nom du champ 1 type de données, ... .); Afficher le jeu de caractères de la table
  • desc nom de la table ; 🎜>
  • supprimer le nom de la table ;                                       >

    insérer les valeurs du nom de la table (valeur 1 ), (valeur 2)...; Insérer l'enregistrement complet

  • insérer dans le nom de la table (nom du champ 1,...) valeurs (valeur 1 ),...; Insérer les données du champ

  • sélectionner * à partir du nom de la table [où condition] ; Interroger tous les champs

  • sélectionner le nom du champ 1, le nom du champ 2,. ..à partir du nom de la table [condition où] ; Afficher le champ

  • modifier le nom de la table ajouter le nom du champ type de données ; Ajouter le champ

  • Modifier la table Nom de la table AJOUTER le nom du champ Type de données type de données en premier ; insérer la tête)

  • Modifier la table Nom de la table AJOUTER le type de données du champ type de données Après le nom du champ ; 🎜>

    >
  • modifier le nom de la table déposer le nom du champ ;               Modifier le type de données
  • modifier le nom de la table renommer le nom de la table ;                                                                                                                                                    
  • mettre à jour le nom de la table, définir le champ 1=valeur 1, le nom du champ 2=valeur 2,...où la condition ​​Modifier l'enregistrement de la table (où doit être ajouté)
  • modifier le nom de la table changer le nom d'origine nouveau nom Type de données ; 🎜> Créer le nom de la table Sélectionnez * à partir du nom de la table où false ; Copiez la structure de la table (pas la clé de copie)
  • énumération de sexe ("M", "F", "S") non nulle par défaut "S"                    Contraintes

  • afficher les variables comme le nom de la variable ; Variable MySQL

  • sélectionner la liste de noms de champs dans la liste de noms de table ; nom de t1 , T2 WHERE Conditions Requête multi-tables

  • Créer un index sur nom de la table (nom du champ); ajouter un index ordinaire

  • créer une table (... .index (nom du champ), ...) Lors de la création d'une table, créez un index commun

  • Supprimer l'index sur le nom sur le nom ; afficher l'index à partir du nom de la table ;      Ajouter un index unique

  • créer le nom de la table (…. , unique clé (nom du champ) );                                                                                                                                                                                                    Créer un index unique lors de la création de la table

  • déposer le nom de l'index unique sur le nom de la table ; Supprimer l'index unique

  • afficher l'index unique à partir du nom de la table ;          Ajouter un index de clé primaire

  • créer un nom de table de table ( …. , id int, clé primaire (nom du champ) );                la table

  • (id int primaire key auto_increment ,)auto_increment=10000; Définir la valeur de départ de l'incrémentation automatique

  • alter table table name modifier id int auto_increment; Ajouter une incrémentation automatique

  • alter table Nom de la table Auto_increment = 20000 ; Modifier la valeur de départ de la croissance de

  • Alter Table Table Name Modifier ID Int ; Supprimer la croissance personnelle

  • Modifier le nom de la table : déposer la clé primaire ;                                                                                                                                                                                                              . Afficher la structure du tableau ( clé)

  • Non_Unique : 1 : index                                                                                                                                                                                                                   
  • Non_Unique : 0 : nom de clé étrangère de clé unique ; Supprimer la clé étrangère 🎜>

  • afficher le nom de la table de création ; Créer une clé étrangère :
  • créer ……t1 ();
  • créer la table t2 (

clé étrangère (nom du champ de référence)

références table principale (nom du champ référencé)

sur l'action en cascade de suppression

sur l'action en cascade de mise à jour);

Ajouter une clé étrangère :

modifier le nom de la table, ajouter

La clé étrangère (champ de référence) fait référence à la table principale (champ référencé)

en cas de suppression…

en cas de mise à jour…

action en cascade :

restrict (par défaut) ne permet pas à la table maître de faire fonctionner la table esclave

cascade : suivre la suppression, mettre à jour

set null : la valeur de la table esclave est NULL après la table maître est modifiée

Lien interne :

sélectionnez le nom du champ dans la table 1

table de jointure interne 2 sous condition

table de jointure interne 3 sur Condition... ;

Lien externe :

Afficher les résultats de la requête en fonction de la table de gauche

champ de sélection. nom du tableau 1

                                                                                               en utilisant           en utilisant               en utilisant                  en utilisant                           en utilisant                            via Résultat

Import de données :

charger les données dans le fichier "nom du fichier"

dans le nom de la table

champs terminés par un « délimiteur »

lignes terminées par « n » ;

Exportation des données :

sélectionnez… à partir du nom de la table

dans le fichier de sortie « /var/lib/mysql-files/file name»

champs terminés par un « délimiteur »

lignes terminées par « n » ;

Récupération de données :

Restaurer une seule bibliothèque

mysql -uroot -p < ; Nom de la bibliothèque cible xxx.sql

De Restaurer une certaine base de données à partir de toutes les sauvegardes de base de données (-one-database)

mysql -uroot -p –one-database Nom de la base de données cible 37ba488fb6467adffc2f7e14960b9dd4 /xxx.sql

–sauvegarde de toutes les bases de données Toutes les bibliothèques

Nom de la bibliothèque Sauvegarder une seule bibliothèque

-B Bibliothèque 1 Bibliothèque 2.. Sauvegarder plusieurs bibliothèques

Tableau de noms de bibliothèque 1 Tableau 2... Sauvegarder la table spécifiée de la bibliothèque spécifiée

Détection du temps d'exécution :

Activé : définir le profilage

Désactivé ; : set profiling=0;

Enregistrement d'exécution de la requête : afficher les profilages ;

Requête SQL :

3.sélectionnez… la fonction d'agrégation à partir du nom de la table

1.où

2.grouper par…

4.avoir…

5.commander par…

6.limiter… ;

Imbrication des requêtes :

sélectionnez ... à partir du nom de la table où condition (sélectionnez .... 🎜>

(pays,gongji) dans

(sélectionnez le pays,max(gongji) du groupe sanguo par pays);

où : ne peut être utilisé que les champs qui existent réellement dans le tableau

grouper par : regrouper les résultats de la requête

après avoir : filtrer davantage les résultats de la requête

distinct : ne pas afficher les valeurs de champ répétées

afficher les moteurs ;                                                                                                                                                                                                Afficher le moteur de stockage de la table

créer le nom de la table (…)engine=myisam; 🎜>alter table nom de la table engine=innodb;

Fonctionnalités InnoDB (2 fichiers) :

Verrous au niveau des lignes, prise en charge des clés étrangères, opérations de transaction

.frm (structure de table, index), .ibd (enregistrements de table)

MyISAM :

Fonctionnalités MyISAM (3 fichiers) : Espace table exclusif, verrouillage au niveau de la table

.frm (structure), .myd (enregistrement ), .myi (index)

Verrouillage :

select : Après avoir ajouté le verrou en lecture, les autres ne peuvent pas modifier les enregistrements de la table, mais ils peuvent interroger

insérer, supprimer, mettre à jour : une fois le verrou en écriture ajouté, les autres ne peuvent pas le vérifier ou le modifier

Granularité du verrouillage :

Verrouillage au niveau de la table : myisam

Row- verrouillage de niveau : innodb

Réglage :

1 Choisissez un moteur de stockage approprié

2. Indexer les champs communs

3. où éviter Utilisez !=, un jugement NULL ou un lien,

comme le préfixe %, dans, pas dans, * au lieu du champ,

Type de données :

Type de données :

int                                                                                      en utilisant   en utilisant   en utilisant         en utilisant en utilisant ‐                                                                                                                                            Signé (signé par défaut) : -128 ~ 127

Non signé (non signé) : 0 ~ 255

smallint Petit entier (2 octets)

bigint Très grand Type entier (8 octets)

float Float (4 octets, 7 chiffres significatifs)

Nom du champ float (m , n) m : nombre total de chiffres n : décimale Nombre

décimal Nombre à virgule flottante (28 chiffres significatifs)

Nom du champ décimal (m, n) m : nombre total de chiffres n : nombre de décimales

Multiples de 9 regroupés dans 4 octets

Octets restants

0 0

1-2 1

3-4 2

5 -6 3

7-9 4

Énumération du nom du champ (valeur 1, valeur 2...) ; 🎜>

Nom du champ défini (valeur 1, valeur 2 ...); choix multiple (ensemble)

(multiple placé dans une chaîne, séparé)

date : "aaaa- mm-jj"

heure : "HH:MM:SS"

dateheure : "AAAA-MM-JJ HH:MM:SS"

horodatage : "AAAA- MM-DD HH:MM:SS"

datetime : si aucune valeur n'est donnée, il renvoie Null par défaut

timestamp : si aucune valeur n'est donnée, il renvoie l'heure système par défaut Renvoie l'heure système heure actuelle du serveur

curdate()                                                                                                                                                                                                                                                                                                                                                                       Renvoie la date à l'heure spécifiée

heure (date)                                                                                     à travers les "s dehors à travers à dehors à travers à travers à dehors à dehors à dehors à outole out out out out out out out out out out off off off off off off off off off off off''''''‐‐‐‐‐‐‐ les dates des jours ensemble à 🎜>somme (nom du champ) : sum

max (nom du champ) : valeur maximale

min (nom du champ) : valeur minimale

count (nom du champ) : Comptez le numéro de ce champ

Opérateur : + – * / %

Opérateur de temps

sélectionnez * dans le nom de la table

où le symbole d'opération du nom du champ (unité d'intervalle de temps

Unité d'intervalle de temps : 1 jour | 2 heures | 1 minute | 2 ans

Comparaison numérique : = != >= <=

Comparaison de caractères : = !=

Comparaison logique : et ou

Comparaison dans la plage :

1.où le nom du champ entre la valeur 1 et la valeur 2

2.où le nom du champ dans (valeur 1, valeur 2,….)

3.où le nom du champ n'est pas dans (valeur 1, valeur 2,...)

vide : où le nom est nul

non vide : où le nom n'est pas nul

NILL : Valeur nulle, vous ne pouvez utiliser que is ou is not pour correspondre

"": Chaîne vide, utilisez = ou != pour correspondre

Comparaison floue :

où Nom du champ comme expression

Expression

_ : Correspond à un seul caractère

% : Correspond à 0 à plusieurs caractères

NULL ne sera pas compté

Tri : trier par ASC | DESC

Affichage : limite de position d'affichage de départ, nombre d'articles

Afficher n enregistrements par page, afficher la page m :

limite (m-1)*n, n

Interaction MySQL et Python

# mysqlpython.py

# 导入mysql模块
from pymysql import *


class MysqlPython:
    def __init__(self, database,  # 库
                 host="127.0.0.1",  # ip地址
                 user="root",  # 用户名
                 password="123456",  # 密码
                 port=3306,  # 端口
                 charset="utf8"):  # 字符集
        self.host = host
        self.database = database
        self.user = user
        self.password = password
        self.port = port
        self.charset = charset

    def open(self):  # 创建数据库链接函数
        self.db = connect(host=self.host,
                          database=self.database,
                          user=self.user,
                          password=self.password,
                          port=self.port,
                          charset=self.charset)
        self.cur = self.db.cursor()  # 创建游标对象

    def close(self):  # 创建断开数据库链接 关闭游标函数
        self.cur.close()
        self.db.close()

    def zhixing(self, sql, L=[]):  # 创建pymysql.execute() 方法函数
        try:
            self.open()  # 链接数据库
            self.cur.execute(sql, L)  # 参数化执行SQL命令
            self.db.commit()  # 提交数据
            print("ok")
        except Exception as e:
            self.db.rollback()  # 出错取消提交
            print("Failed", e)
        self.close()  # 断开数据库链接 关闭游标

    def all(self, sql, L=[]):
        try:
            self.open()
            self.cur.execute(sql, L)
            result = self.cur.fetchall()
            return result
        except Exception as e:
            print("Failed", e)
        self.close()

Connexion utilisateur à la base de données

from mysqlpython import Mysqlpython
from hashlib import sha1

uname = input("请输入用户名:")
pwd = input("请输入密码:")
# 用sha1给pwd加密

s1 = sha1()  # 创建sha1加密对象
s1.update(pwd.encode("utf8"))  # 指定编码
pwd2 = s1.hexdigest()  # 返回16进制加密结果

sqlh = Mysqlpython("db4")
select = "select password from user where 
          username=%s;"
result = sqlh.all(select, [uname])
# print(result)
# ((&#39;7c4a8d09ca3762af61e59520943dc26494f8941b&#39;,),)

if len(result) == 0:
    print("用户名不存在")
elif result[0][0] == pwd2:
    print("登录成功")
else:
    print("密码错误")

Cadre ORM sqlalchemy

# 创建一张表 # 连接数据库的模块 from 
sqlalchemy import create_engine fromsqlalchemy.ext.declarative
 import declarative_base from sqlalchemy import Column, Integer
,String engine = create_engine("mysql+pymysql://root:123456@localhost/db4", 
encoding="utf8") Base = declarative_base() # orm基类 class User(Base):
 # 继承Base基类 __tablename__ = "t123" id =Column(Integer, primary_key=True) 
name = Column(String(20)) address = Column(String(40))Base.metadata.create_all
(engine)

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer