热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flask中可以利用FlaskSQLAlchemy

为什么80%的码农都做不了架构师?官方文档:http:flask-sqlalchemy.pocoo.org2.31.安装(进入虚拟环境)--利用镜

为什么80%的码农都做不了架构师?>>>   hot3.png

官方文档: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)


转:https://my.oschina.net/SimTao/blog/2222733



推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有