[PYTHON] code-server Environnement local (9) Préparons un environnement MVC comprenant DB (6)

Ceci est l'article du 9ème jour de Advent Calender sur le serveur de code 2019. Cette fois aussi, j'expliquerai ce qu'est le serveur de code?

(1) Qu'est-ce que le serveur de code? (2) Créez votre propre environnement de serveur de code avec Docker (3) Essayez d'utiliser le plug-in de VSCode (4) Préparons un environnement MVC comprenant DB etc. (1) (5) Préparons un environnement MVC comprenant DB etc. (2) (6) Préparons un environnement MVC comprenant DB etc. (3) (7) Préparons un environnement MVC comprenant DB etc. (4) (8) Préparons un environnement MVC comprenant DB etc. (5) (9) Préparons un environnement MVC comprenant DB etc. (6) (10) Bonus

(SUIVANT->) Version de l'environnement en ligne 1er jour Améliorer l'environnement de travail

(..) Pour construire localement, y compris l'environnement tel que DB (..) Comment le mettre en ligne? (..) Comment travailler avec le dernier environnement à la mode tel que K8S? (..) Je veux modifier Code-Server pour l'améliorer

À partir de la dernière fois, nous ajouterons des API à l'aide de flask.

Quelle est cette fois?

Le terminal peut démarrer plusieurs en même temps

Décidez du type d'API

Modifions le flacon précédemment créé

main.py


from flask import Flask, request as fl_request, Request
from typing import Dict
import json
import logging

app = Flask(__name__)
logger = logging.getLogger("XXX")
logging.basicConfig(level=logging.DEBUG)

@app.route("/users")
def get_user_from_id():
    request:Request = fl_request
    input:Dict = request.args
    logger.debug("> input: {}".format(input))
    user:Dict = {
        "name":"one",
        "email":"[email protected]",
        "id":1}
    return json.dumps(user)

app.run("0.0.0.0",port=8080)

Si un ID est passé en tant que «http: //0.0.0.0/users? Id = 1», les informations utilisateur correspondant à cet ID seront renvoyées.

Essayez de bouger

Essayez de démarrer le flacon.


$ python main.py 
 * Serving Flask app "main" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
INFO:werkzeug: * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

Ouvrez un nouveau terminal et appuyez sur la commande curl

$ curl 127.0.0.1:8080/users?id=1
{"name": "one", "email": "[email protected]", "id": 1}

Oups, des informations sur l'utilisateur ont été fournies.

Lisez les données de la base de données et essayez d'afficher

Cette fois, j'utilise le package de jeu de données pour faire fonctionner db à partir de python. https://github.com/pudo/dataset

$ pip install dataset

Puisque mysql est utilisé, ajoutez le package mysqlclient.

$ pip install mysqlclient

main.py


from flask import Flask, request as fl_request, Request
from typing import Dict
import json
import dataset
import logging

app = Flask(__name__)
logger = logging.getLogger("XXX")
logging.basicConfig(level=logging.DEBUG)

db:dataset.Database = dataset.connect('mysql://root:passwd@mysqld/app_db')

@app.route("/users")
def get_user_from_id():
    request:Request = fl_request
    input:Dict = request.args
    logger.debug("> input: {}".format(input))
    users_table:dataset.Table = db.get_table("users")
    user:Dict = users_table.find_one(id=int(input["id"]))
    return json.dumps(user)

app.run("0.0.0.0", port=8080)

Vous vous connectez à la base de données avec dataset.connect et obtenez des informations utilisateur avec ʻusers_table.find_one`.

Essayez de bouger

Essayez de démarrer le flacon.


$ python main.py 
 * Serving Flask app "main" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
INFO:werkzeug: * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

Ouvrez un nouveau terminal et appuyez sur la commande curl

$ curl 127.0.0.1:8080/users?id=1
{"name": "one", "email": "[email protected]", "id": 1}

Oups, des informations sur l'utilisateur ont été fournies.

PS

Créons requirements.txt !!

Il est courant de conserver les packages python dans un fichier. https://pip.readthedocs.io/en/1.1/requirements.html

pip install -r requirements.txt

-r Ajouter et exécuter des options de ligne de commande.

requirements.txt


Flask==1.1.1
dataset==1.1.2
mysqlclient==1.4.6

Vous pouvez également écrire une liste de packages dépendants dans un fichier avec pip freeze> requirements_lock.txt.

la prochaine fois

Dans Flask, essayez d'ajouter un utilisateur. En outre, je prévois de terminer la version de l'environnement local dans environ deux fois et d'entrer la version de l'environnement en ligne et la version de remodelage magique.

PS La source https://github.com/kyorohiro/advent-2019-code-server

Recommended Posts

code-server Environnement local (9) Préparons un environnement MVC comprenant DB (6)
code-server Environnement local (4) Préparons un environnement MVC incluant DB (1)
code-server Environnement local (5) Préparons un environnement MVC incluant DB (2)
environnement en ligne de serveur de code (6) Automatisons
code-server Environnement local (3) Essayez d'utiliser le plug-in de VSCode
Introduction à Python Préparons l'environnement de développement