This is the 9th day article of Advent Calender on the 2019 code-server. This time as well, I will explain what is code-server?
(1) What is code-server? (2) Create your own code-server environment with Docker (3) Try using VSCode Plugin (4) Let's prepare an MVC environment including DB etc. (1) (5) Let's prepare an MVC environment including DB etc. (2) (6) Let's prepare an MVC environment including DB etc. (3) (7) Let's prepare an MVC environment including DB etc. (4) (8) Let's prepare an MVC environment including DB etc. (5) (9) Let's prepare an MVC environment including DB etc. (6) (10) Bonus
(NEXT->) Online environment version 1st day Improve the work environment
(..) To build locally including environment such as DB (..) How to put it online? (..) How to work with the latest trendy environment such as K8S? (..) I want to modify Code-Server to make it better
Continuing from the last time, we will add APIs using flask.
Let's modify the previously created flask
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)
If an ID is passed as http://0.0.0.0/users?id=1
, the user information corresponding to that ID will be returned.
Try starting flask.
$ 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)
Open a new terminal and try hitting the curl command
$ curl 127.0.0.1:8080/users?id=1
{"name": "one", "email": "[email protected]", "id": 1}
Oops, user information has been given.
This time, I am using the dataset package to operate db from python. https://github.com/pudo/dataset
$ pip install dataset
Since we will use mysql, add the mysqlclient package.
$ 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)
You can connect to the database with dataset.connect
and get user information with ʻusers_table.find_one`.
Try starting flask.
$ 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)
Open a new terminal and try hitting the curl command
$ curl 127.0.0.1:8080/users?id=1
{"name": "one", "email": "[email protected]", "id": 1}
Oops, user information has been given.
PS
Let's create requirements.txt !!
It is customary to keep python packages in a file. https://pip.readthedocs.io/en/1.1/requirements.html
pip install -r requirements.txt
-r Add and run command line options.
requirements.txt
Flask==1.1.1
dataset==1.1.2
mysqlclient==1.4.6
You can also write a list of dependent packages to a file with pip freeze> requirements_lock.txt
.
In Flask, try adding user. Also, I plan to finish the local environment version in about two times and enter the online environment version and the magic remodeling version.
PS Source https://github.com/kyorohiro/advent-2019-code-server
Recommended Posts