Maison > base de données > tutoriel mysql > le corps du texte

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

coldplay.xixi
Libérer: 2020-12-17 10:39:36
avant
2212 Les gens l'ont consulté

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 < xxx.sql 2. Restaurez une certaine base de données dans la sauvegarde

Restaurer : la table n'est pas supprimée mais les enregistrements de la table sont supprimés Remplacer la

Connexion à distance MySQL :

sudo -i                                                       1. Mode administrateur 🎜>cd/mysql/ mysql.conf.d/                         2 .cd dans le répertoire mysql

vi mysqld.cnf                                  3. Ouvrez et commentez l'adresse IP par défaut                          4. Enregistrez

/etc/init. MySQL Redémarrez 5. Redémarrez le service

Utilisateur autorisé :

Accorder la liste autorisée sur la bibliothèque. Table à "@"%"Identifier par" mot de passe " avec l'option d'attribution 1. Format de commande

Exemple : accordez tous les privilèges sur *.* à « tigre »@ »%» identifié par « 123 » avec l'option d'octroi ; 2. Exemple

tous les privilèges, Sélectionner, INSÉRER ... 4. Formulaire : *. . *Toutes les bibliothèques toutes les tables 3. Liste permanente

Installation du module Python3 :

Nom du module : pymysql <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜

En ligne : sudo pip3 install pymysql

Hors ligne : pymysql-0.7.11.tar.gz

$ tar -zxvf pymyql-0.7.11 .tar.gz

$ cd pymysql-0.7.11

$ sudo python3 setup.py install

Vérification :

$ python3

& gt;>> 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 < sql

Restaurer : les enregistrements de la table ne seront pas supprimés Supprimer et écraser

sauvegarde des données :

mysqldump -u user -p source library name> /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()
Copier après la connexion

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("密码错误")
Copier après la connexion

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)
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:csdn.net
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!