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

  • 相关阅读:
    【2】Java包装类
    【1】Java异常
    【10】Java多态:内部类
    【9】Java多态:接口
    【8】Java多态:抽象类(abstract关键字)
    【7】Java多态:向上转型、向下转型、instanceof运算符
    【6】Java单例模式
    元素定位工具:Chrome浏览器ChroPath插件
    linux添加环境变量
    php导出数据到多个csv并打包压缩
  • 原文地址:https://www.cnblogs.com/twodog/p/12135854.html
Copyright © 2011-2022 走看看