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()
    
  • 相关阅读:
    一个男人该有的气质
    有没有想过,也许一辈子你都是个小人物
    System.IO.File.WriteAllText("log.txt", "dddd");
    cn_windows_10_enterprise_version_1703_updated_june_2017_x64_dvd_10720588.iso
    Visual Studio 2015 update 3各版本下载地址
    优麒麟 16.04 LTS(长期支持)版本
    干货!最全羽毛球技术动态分解gif图
    添加缓存 绝对时间过期
    C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑
    无法解析依赖项。“Microsoft.Net.Http 2.2.29”与 'Microsoft.Net.Http.zh-Hans
  • 原文地址:https://www.cnblogs.com/leimu/p/13203261.html
Copyright © 2011-2022 走看看