zoukankan      html  css  js  c++  java
  • Flask-SQLAlchemy

    ORM的好处:可以让我们操作数据库跟操作对象是一样的,非常方便,因为一个表就抽象成一个类,一条数据就抽象成该类的一个对象。

    一、初始化

    from flask_sqlalchemy import SQLAlchemy  
    app = Flask(__name__)
    app.config.from_config(config)
    db = SQLAlchemy(app)
    

    其中,config为配置文件

    SQLALCHEMY_DATABASE_URI = ('mysql+pymysql://'+MYSQL['user']+':'+MYSQL['password']+'@'+MYSQL['host']+'/'+MYSQL['db'])
    SQLALCHEMY_POOL_SIZE = 1
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SECRET_KEY = os.environ.get('SECRET_KEY') or '10086'
    

    二、db对象产生之后,使用db对象创建模型与表的映射。

    模型需要继承自db.Model,然后需要映射到表中的属性,必须写成db.Column的数据类型。
    数据类型:
    db.Integer代表的是整形.
    db.String代表的是varchar,需要指定最长的长度.
    db.Text代表的是text.
    其他参数:
    primary_key:代表的是将这个字段设置为主键。
    autoincrement:代表的是这个主键为自增长的。
    nullable:代表的是这个字段是否为空,默认可以为空,可以将这个值设置为False,在数据库中,这个值就不能为空了。
    index:是否设置为索引

    创建User类,作为博客用户。

    class User(db.Model):
        __tablename__ = 'usertable' #如果不指定表名,会默认以这个类名的小写为表名
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(32), index=True, unique=True)
        email = db.Column(db.String(255), index=True, unique=True)
        password = db.Column(db.String(32))
        permission = db.Column(db.Integer())
        accept_email = db.Column(db.Boolean(), default=False)
        register_time = db.Column(db.DateTime())
        def __repr__(self): # 方便查看打印输出结果
            return '<User {}>'.format(self.name)
    
        def set_password(self, password): # 生成密码
            self.password = generate_password_hash(password)
    
        def check_password(self, password): # 检查密码
            return check_password_hash(self.password, password)
    

    三、增、删、改、查

    #根据用户名查找.filter_by 表内部精确查询
     user = User.query.filter_by(name=username).first()
    
  • 相关阅读:
    12、SpringBoot-CRUD增加数据
    12、SpringBoot-CRUD增加数据
    Cache操作类
    pythonhttp
    python学习
    自动化测试LoadRunner
    pythonweb自动化测试
    python学习工具篇
    python学习
    自动化测试之python安装
  • 原文地址:https://www.cnblogs.com/leimu/p/13203261.html
Copyright © 2011-2022 走看看