Maison développement back-end Tutoriel Python Explication détaillée des exemples de connexion de Flask et de MySQL (python)

Explication détaillée des exemples de connexion de Flask et de MySQL (python)

Apr 26, 2017 am 11:09 AM
flask mysql python

Le quatrième article sur la naissance d'une application Web basée sur flask. Cet article présente principalement comment interconnecter flask et mysql. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

Le chapitre 1 implémente une partie de. la fonction de connexion. La raison pour laquelle on l'appelle une fonction partielle est qu'il n'est absolument pas permis d'écrire le nom d'utilisateur et le mot de passe sous forme de valeurs fixes. Une fonction entière nécessite au moins une inscription, une connexion, une modification du mot de passe, etc., ce qui nécessite de fournir. a La possibilité de stocker ces valeurs dans la base de données.

Les bases de données grand public actuelles sont divisées en deux types, à savoir les bases de données relationnelles et les bases de données NoSql. Pour les systèmes de petite et moyenne taille, les performances et la facilité d'utilisation des deux bases de données sont équivalentes, et ce sont toutes deux de bons choix. .

Configuration de base

Ici, nous utilisons le package d'intégration flask du framework de base de données SQLAlchemy, à savoir flask-SQLAlchemy, pour effectuer des opérations de base de données.

SQLAlchemy est un très bon framework qui simplifie les opérations de base de données. Il fournit des fonctions ORM de haut niveau et SQL de bas niveau, ce qui est très pratique à utiliser.

La méthode d'installation est la même que le type précédent, ou la commande pip :

pip3.6 install flask-sqlalchemy
Copier après la connexion

Une fois l'installation terminée, modifiez la partie de configuration par défaut, importez d'abord le package :

from flask.ext.sqlalchemy import SQLAlchemy
Copier après la connexion

Configurez ensuite la chaîne de lien :

app.config["SQLALCHEMY_DATABASE_URI"]='mysql://root:1234@localhost/cblog'
Copier après la connexion

Configurez la soumission automatique des modifications une fois la demande terminée :

app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"]=True
Copier après la connexion

Instancier SQLAlchemy :

db=SQLAlchemy(app)
Copier après la connexion

Paramètres du modèle

Une fois l'installation terminée , continuez à améliorer l'exemple de connexion et modifiez le fichier default.py, ajoutez le modèle utilisateur (classe) et le modèle de rôle (pour montrer l'association)

Classe de rôle

class Role(db.Model): #需继承模型
 __tablename__="roles" #db中表明,如果不设置,则会与class同的默认名
 id=db.Column(db.Integer,primary_key=True) #SQLAlchemy要求必须有主键,一般命名为id即可
 name=db.Column(db.String(50),unique=True) #表示name为字符串,不重复
 users=db.relationship("User",backref='role') #关联user模型,并在user中添加反向引用(backref)
Copier après la connexion

Classe d'utilisateur

class User(db.Model):
 __tablename__="users"
 id=db.Column(db.Integer,primary_key=True)
 username=db.Column(db.String(50),unique=True,index=True) #此列带索引
 password=db.Column(db.String(50))
 role_id=db.Column(db.Integer,db.ForeignKey("roles.id")) #外键指向roles表中的id列
Copier après la connexion

Nous devons réfléchir à la manière de l'exécuter ci-dessous, il doit être pratique et ne peut pas envahir le code logique, ce qui nécessite qu'il ne puisse pas être codé en dur dans le code logique. Par exemple, le code pour juger la base de données. status est passé en paramètre à app.run(). À ce stade, le shell est utile

Script de configuration

Si vous souhaitez que Flask prend en charge les scripts de ligne de commande, vous devez d'abord installer l'extension flask-script :

pip3.6 install flask-script
Copier après la connexion

Modifier default.py Le code :

from flask.ext.script import Manager
mamager=Manager(app)
....
if __name__=='__main__':
 #app.run(debug=True)
 mamager.run()
Copier après la connexion

Après modification, exécutez-le à nouveau :

python default.py
Copier après la connexion

et constatez qu'il ne s'exécute pas correctement, mais il y a une invite :


Vous pouvez voir que les paramètres suivants sont requis, à savoir shell (exécuter le script), runserver (démarrer le service) et aider

Démarrez le service ci-dessous :

python default.py runserver
Copier après la connexion

Service exécuté avec succès

Plus de configurations de base de données

Mais à ce moment-là, lors de l'accès au site (127.0.0.1:5000), une erreur 500 apparaîtra, indiquant qu'il n'y a pas de module mysql, pourquoi ? Évidemment, la raison est que le pilote mysql n'est pas installé. Utilisez la commande pip pour installer le pilote :

pip3.6 install MySQL-python
Copier après la connexion

Une erreur est trouvée et le contenu affiché est (uniquement win system ici) :

Selon les invites, installez la boîte à outils C++ et suivez l'adresse de téléchargement sur les invites

landinghub.visualstudio.com/visual-cpp-build-tools

Une fois le téléchargement terminé, directement le fichier exe, installez

puis redémarrez pour installer MySQL-python. Après avoir passé par Baidu, j'ai découvert que MySQLdb. La bibliothèque ne prend en charge que jusqu'à python2.7 et ne prend plus en charge 3.x, je dois donc utiliser d'autres méthodes, utilisez la bibliothèque PyMySQL :

pip3.6 install PyMySQL
Copier après la connexion

Modifiez ensuite le code de default.py. et ajoutez deux lignes :

import pymysql
pymysql.install_as_MySQLdb()
Copier après la connexion

Entrez le code source et faites attention à cette ligne :

sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]
Copier après la connexion

pour réussir à utiliser et à vous connecter à MySQL .
Entrez la connexion dans le navigateur et entrez correctement sur le site.

Ensuite, utilisez le shell pour créer la table de base de données et entrez dans le répertoire racine de default.py :

python default.py shell
from default import db
db.create_all()
Copier après la connexion

Si aucune erreur n'est signalée à ce niveau temps, alors la table de base de données devrait être Création terminée :


Migration de la base de données

Ensuite, le problème vient , à ce stade, modifier le modèle ne sera pas reflété dans la base de données, alors que dois-je faire si je le modifie ? Pour l'instant, c'est aussi très simple :

db.drop_all()
db.create_all()
Copier après la connexion

Mais cela n'est utilisé que pour le débogage maintenant. S'il y a déjà des données dans la base de données, ce sera certainement insupportable à ce moment-là. de la base de données Le plug-in de migration Migrate est ici. La première chose est toujours la même. Il faut l'installer :

pip3.6 install flask-migrate
Copier après la connexion

Comme avant, après l'installation, modifiez le fichier default.py pour la configuration :

from flask.ext.migrate import Migrate,MigrateCommand
migrate=Migrate(app,db) #配置迁移
mamager.add_command("db",MigrateCommand) #配置迁移命令
Copier après la connexion

Utilisez ensuite la commande init pour initialiser l'entrepôt de migration

 python default.py db init
Copier après la connexion

La ligne de commande affiche :


Ajoutez ensuite le répertoire migrations :

indique que le fichier de migration a été initialisé.

migrate框架提供了一些命令来进行迁移操作,分别为(使用default.py文件举例):

#根据差异创建迁移
python default.py db migrate -m "说明"
#改动差异 
python default.py db upgrade
#取消差异改动
python default.py db downgrade
Copier après la connexion

回到表单

接下来看看登录如何与数据库关联起来,修改login方法内的代码:

@app.route("/login",methods=["POST"])
def loginPost():
 username=request.form.get("username","")
 password=request.form.get("password","")
 user=User.query.filter_by(username=username,password=password).first() #数据库查询
 if user is not None:
 session["user"]=username
 return render_template("/index.html",name=username,site_name='myblog')
 else:
 flash("您输入的用户名或密码错误")
 return render_template("/login.html") #返回的仍为登录页
Copier après la connexion

执行结果非常完美。

一些总结

下面是一些关于python和db相连的总结性的东西

数据类型

列选项

数据库操作

查询过滤器

经过这几章,登录功能已经基本完成,在下一章中将讲解用户注册的相关功能。

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Le plan Python de 2 heures: une approche réaliste Le plan Python de 2 heures: une approche réaliste Apr 11, 2025 am 12:04 AM

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Comment démarrer le serveur avec redis Comment démarrer le serveur avec redis Apr 10, 2025 pm 08:12 PM

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

PHPMYADMIN CONNEXION MYSQL PHPMYADMIN CONNEXION MYSQL Apr 10, 2025 pm 10:57 PM

Comment se connecter à MySQL à l'aide de PhpMyAdmin? L'URL pour accéder à phpmyadmin est généralement http: // localhost / phpmyadmin ou http: // [votre adresse IP de serveur] / phpmyadmin. Entrez votre nom d'utilisateur et votre mot de passe MySQL. Sélectionnez la base de données à laquelle vous souhaitez vous connecter. Cliquez sur le bouton "Connexion" pour établir une connexion.

Pourquoi utiliser MySQL? Avantages et avantages Pourquoi utiliser MySQL? Avantages et avantages Apr 12, 2025 am 12:17 AM

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

Comment lire les données de Redis Comment lire les données de Redis Apr 10, 2025 pm 07:30 PM

Pour lire les données de Redis, vous pouvez suivre ces étapes: 1. Connectez-vous au serveur Redis; 2. Utilisez Get (clé) pour obtenir la valeur de la clé; 3. Si vous avez besoin de valeurs de chaîne, décodez la valeur binaire; 4. L'utilisation existe (clé) pour vérifier si la clé existe; 5. Utilisez MGET (KEYS) pour obtenir plusieurs valeurs; 6. Utilisez le type (clé) pour obtenir le type de données; 7. Redis a d'autres commandes de lecture, telles que: obtenir toutes les clés dans un modèle de correspondance, en utilisant des curseurs pour itérer les clés et tri les valeurs de clés.

Guide de l'utilisation globale de phpmyadmin Guide de l'utilisation globale de phpmyadmin Apr 10, 2025 pm 10:42 PM

PhPMyAdmin n'est pas seulement un outil de gestion de la base de données, il peut vous donner une compréhension approfondie de MySQL et améliorer les compétences en programmation. Les fonctions principales incluent l'exécution de la requête CRUD et SQL, et il est crucial de comprendre les principes des instructions SQL. Les conseils avancés incluent l'exportation / l'importation de données et la gestion des autorisations, nécessitant une compréhension approfondie de la sécurité. Les problèmes potentiels incluent l'injection SQL et la solution est des requêtes paramétrées et des sauvegardes. L'optimisation des performances implique l'optimisation des instructions SQL et l'utilisation de l'index. Les meilleures pratiques mettent l'accent sur les spécifications du code, les pratiques de sécurité et les sauvegardes régulières.

See all articles