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

  • 相关阅读:
    对象的访问定位——如何找到对象
    对象的结构
    对象在内存中的布局-对象的创建
    java的内存模型--jmm
    redis 持久化之rdb总结
    简单说springmvc的工作原理
    抽象类和接口的区别
    hashcode和equals的作用区别及联系
    DBC物品中打包物品参数设置
    关于GOM引擎启动时显示:windows socket error: 在其上下文中,该请求的地址无效。 (10049), on API 'bind'
  • 原文地址:https://www.cnblogs.com/twodog/p/12135855.html
Copyright © 2011-2022 走看看