zoukankan      html  css  js  c++  java
  • Flask中可以利用Flask-SQLAlchemy

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

  • 相关阅读:
    b_lc_数组中最大数对和的最小值(排序+思维 | 进阶:第k)
    b_lc_使用服务器处理任务(模拟 + 堆)
    b_lc_插入后的最大值(贪心+区分正负数)
    b_lc_蓄水(反向思维:枚举取水次数)
    万能JDBC工具类【DBUtil 】
    Eureka服务注册中心
    springboot dubbo+zookeeper
    Thymleaf引擎模板
    多环境切换 & JSR303数据校验
    yaml配置注入
  • 原文地址:https://www.cnblogs.com/twodog/p/12135854.html
Copyright © 2011-2022 走看看