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

  • 相关阅读:
    Warning: (1260, 'Row xxx was cut by GROUP_CONCAT()')
    MySQL之text字段
    将 Python 程序打包成 .exe 文件
    mysql json数据类型
    iOS边练边学--iOS中的json数据解析
    iOS边练边学--NSURLConnection发送HTTP请求以及NSString和NSData的相互转换
    iOS边练边学--Http网络再学习,简单介绍
    iOS边练边学--多线程练习的多图片下载 以及 使用第三方框架(SDWebImage)的多图片下载
    iOS边练边学--iOS中的(ARC下)单粒模式(GCD实现)
    iOS边练边学--cocoaPods管理第三方框架--命令行方式实现
  • 原文地址:https://www.cnblogs.com/twodog/p/12135853.html
Copyright © 2011-2022 走看看