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()
    
  • 相关阅读:
    UVA 254 Towers of Hanoi
    UVA 701 The Archeologists' Dilemma
    UVA 185 Roman Numerals
    UVA 10994 Simple Addition
    UVA 10570 Meeting with Aliens
    UVA 306 Cipher
    UVA 10160 Servicing Stations
    UVA 317 Hexagon
    UVA 10123 No Tipping
    UVA 696 How Many Knights
  • 原文地址:https://www.cnblogs.com/leimu/p/13203261.html
Copyright © 2011-2022 走看看