为什么80%的码农都做不了架构师?>>>
官方文档:http://flask-sqlalchemy.pocoo.org/2.3/
1.安装(进入虚拟环境)--利用镜像安装PyMySQL
#python36 -m pip install PyMySQL -i http://pypi.mirrors.ustc.edu.cn/simple --trusted-host pypi.mirrors.ustc.edu.cn
(pymysql是驱动库,请确保安装)
2.安装flask-sqlalchemy:
#python36 -m pip install flask-sqlalchemy -i http://pypi.mirrors.ustc.edu.cn/simple --trusted-host pypi.mirrors.ustc.edu.cn
3.安装自动生成工具sqlacodegen
python36 -m pip install sqlacodegen -i http://pypi.mirrors.ustc.edu.cn/simple --trusted-host pypi.mirrors.ustc.edu.cn
4.利用sqlacodegen生成model:
sqlacodegen --tables users --outfile D:\video\flask\pro\Models.py mysql+pymysql://root:123123@localhost/test?charset=utf8mb4
备注:上面分别是项目路径,数据库用户名密码,数据库名称
5.使用flask-sqlalchemy基本配置:
官方文档:http://flask-sqlalchemy.pocoo.org/2.3/quickstart/#a-minimal-application
(1).在启动文件中(index.py中)配置:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123123@localhost/test?charset=utf8' app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False #SQLAlchemy 将会追踪对象的修改并且发送信号
db = SQLAlchemy(app)
(2).在Model中配置:
官方文档:http://flask-sqlalchemy.pocoo.org/2.3/queries/#querying-records
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
user_id = Column(INTEGER, primary_key=True)
user_name = Column(String(50), nullable=False)
user_qq = Column(String(50), nullable=False)
def as_dict(self): #自定义的方法,把我们的类转为dict
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
6.查询:
官方文档:http://flask-sqlalchemy.pocoo.org/2.3/queries/#querying-records
例如:user=User.query.filter_by(user_id=userid).first() return user
7.自定义响应类的修改:
def force_type(cls, response, environ=None):
if isinstance(response,dict): #当返回类型是dict时,我们做相应的处理
response=jsonify(response)
if isinstance(response, MyModel): # 当返回类型是对象时,我们做相应的处理
response = jsonify(response.as_dict())
return super(Response,cls).force_type(response,environ)