最近想自己写 Android 的接口,之前学过一点 Python 基础,打算用 Flask 框架实现,请看下边
一、准备
PyCharm 编译工具
Mysql 数据库
Flask 框架和 SQLAlchemy 库
百度自行安装 Flask 框架和 SQLAlchemy 库
来看数据库:
上代码:
config.py: 配置连接信息
dbhost = '127.0.0.1:3306' dbuser = 'root' dbpass ='queyiqin' dbname= 'takeout_db' DB_URI ='mysql+pymysql://'+dbuser+':'+dbpass+'@'+dbhost+'/'+dbname SQLALCHEMY_DATABASE_URI = DB_URI
新建 myapp 包
在同一个 myapp 包下
init.py
view.py
model.py
dadabase.py
init.py:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.secret_key=os.urandom(24) # 设置秘钥防止报错 app.config.from_object('config') #导入配置信息 db = SQLAlchemy(app) # 顺序要注意 from myapp import view, model# 顺序要注意 下边的
model.py:
class User(db.Model): __tablename__ = 'user' #数据库的表名 id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True) password = db.Column(db.String(50)) phone = db.Column(db.String(50), unique=True) address = db.Column(db.String(50)) role = db.Column(db.String(50)) def __init__(self, username, password, phone,address,role): self.username = username self.password = password self.phone = phone self.address = address self.role = role def __repr__(self): return '<User %s>' % self.user_name
database: 数据库连接
from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.ext.declarative import declarative_base from config import SQLALCHEMY_DATABASE_URI #导入config.py配置信息 # 用来初始化数据库连接 engine = create_engine(SQLALCHEMY_DATABASE_URI, convert_unicode=True) # 获取连接对象 db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) #获取对象 Base = declarative_base() Base.query = db_session.query_property() def init_db(): #连接 Base.metadata.create_all(bind=engine)
- view.py:
这里说明一下 Flask 框架用的是路由,重点是装饰器!
@app.route('/api/login',methods=['POST','GET'])
def login():
try:
phone = request.args.get('phone')
password = request.args.get('password')
user = User.query.filter_by(phone=phone).first()
if user == None:
return formattingData(code=-1,msg='Not account!',data=[])
if user.password == password:
return formattingData(200,msg='Login success.',data={
"id": user.id,
"username": user.username,
"phone": user.phone
})
else:
return formattingData(code=-1,msg='Incorrect password.',data=[])
except KeyError:
return formattingData(code=-1,msg='Sorry,login failed.',data=[])
# 这个方法用于json格式返回
def formattingData(code,msg,data):
return jsonify(
{
"code": code,
"msg" : msg,
"data": data
}
)
- 接下来运行
test.py:
from myapp import app
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=5000)
可在浏览器输入 127.0.0.1:5000/api/login?phone=18078151341&password=queyiqin成功返回数据。
如有疑问请关注我的公众号,为您解答!