环境 win10 64 bit , python 3.6
先建立一个虚拟目录
1 |
virtualenv venv |
进入所建立虚拟目录的scripts 目录 , 执行
1 |
activate |
在虚拟目录跟目录执行
1 |
pip install flask flask-jsonpify flask-sqlalchemy flask-restful |
安装完成后执行
1 |
pip freeze |
查看所安装的版本
在跟目录新建一个python 脚本 , 命名为 app.py
1 2 3 4 5 6 |
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" |
设置默认启动的脚本
1 |
set FLASK_APP=app.py |
启动
1 |
flask run |
之后用浏览器访问web service ,即可看到返回结果
接下来, 如果实现 CRUD api
新建脚本, 取名为 hello.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
from flask import Flask, request from flask_restful import Resource, Api from sqlalchemy import create_engine from json import dumps from flask_jsonpify import jsonify db_connect = create_engine('sqlite:///chinook.db') app = Flask(__name__) api = Api(app) class Employees(Resource): def get(self): conn = db_connect.connect() # connect to database query = conn.execute("select * from employees") # This line performs query and returns json result return {'employees': [i[0] for i in query.cursor.fetchall()]} # Fetches first column that is Employee ID class Tracks(Resource): def get(self): conn = db_connect.connect() query = conn.execute("select trackid, name, composer, unitprice from tracks;") result = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]} return jsonify(result) class Employees_Name(Resource): def get(self, employee_id): conn = db_connect.connect() query = conn.execute("select * from employees where EmployeeId =%d " %int(employee_id)) result = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]} return jsonify(result) api.add_resource(Employees, '/employees') # Route_1 api.add_resource(Tracks, '/tracks') # Route_2 api.add_resource(Employees_Name, '/employees/<employee_id>') # Route_3 if __name__ == '__main__': app.run(port='5002') |
设置为默认启动脚本
1 |
set FLASK_APP=helo.py |
从 http://www.sqlitetutorial.net/sqlite-sample-database/
下载 sqlite example 数据库 : chinook.db ,copy 到 hello.py 同目录
启动flask
1 |
flask run |
此时打开浏览器
1 |
http://127.0.0.1:5000/tracks |
即可看到 tracks 表的所有记录
到目前为止, 只是实现了查询
参考资料
https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq
大部分对, 但是 这句
1 |
from flask.ext.jsonpify import jsonify |
不对, 在我的环境应为
1 |
from flask_jsonpify import jsonify |
sqlite3 工具下载 https://www.sqlite.org/download.html
sqlite example 数据库 下载