Tutoriel MySQLBase de données d'explications complètes de la pile Python
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èquesNom 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 laConnexion à 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-pythoninstallation 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 :
utiliser le nom de la bibliothèque ;
supprimer le nom de la bibliothèque de la base de données ; Afficher la table existanteinsé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 ; 🎜>
>
é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
Non_Unique : 0 : nom de clé étrangère de clé unique ; Supprimer la clé étrangère 🎜>
références table principale (nom du champ référencé)
sur l'action en cascade de suppressionsur l'action en cascade de mise à jour);Ajouter une clé étrangère :
modifier le nom de la table, ajouterLa 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éeLien interne :
sélectionnez le nom du champ dans la table 1table 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 1en 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 tablechamps 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.sqlDe 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 écrasersauvegarde 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éeDé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 table1.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 .... 🎜> où
(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 tableaugrouper par : regrouper les résultats de la requêteaprès avoir : filtrer davantage les résultats de la requêtedistinct : ne pas afficher les valeurs de champ répétéesafficher 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éfauttimestamp : si aucune valeur n'est donnée, il renvoie l'heure système par défaut Renvoie l'heure système heure actuelle du serveurcurdate() 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 tempssélectionnez * dans le nom de la tableoù 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) # (('7c4a8d09ca3762af61e59520943dc26494f8941b',),) 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!