flask 数据库操作

flask 对 mysql数据库的操作依赖于flask_sqlalchemy包

在使用这包的时候需要优先给这个包一个实例化对象db = SQLAlchemy(),这样的话就可以避免结构混乱导致的循环导包

在通过SQLAlchemy()对mysql进行操作的时候需要几个配置项:

# mysql+pymysql的目的是更好地对数据库进行操作 只使用mysql的话引擎有点跟不上
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://用户名:密码@地址:端口/数据库库名'
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True

在定义模型映射类的时候需要继承db.Model db是刚刚实例化的SQLAlchemy()

然后就是字段 由于在定义迁移的时候并不会自己生成id 所以我们要自行定义

create table tb_user
(
    id            int auto_increment primary key,
    name            int    null,
    gender    int    null,
    create_date    datetime     null,
)

对应的就是:

class User(db.Model):
    """
    用户表
    """
    # 这个是表名
    __tablename__ = 'tb_user'
    
    id = db.Column(db.Integer, primary_key=True, doc='用户ID', autoincrement=True)
    name = db.Column(db.String(32), doc='昵称')
    create_date = db.Column(db.DateTime, default=datetime.now, doc='创建时间')
    def __str__(self):
        return self.name

通过这个模型类,我们就可以对数据库进行增删改查操作了

增:

user_obj = User(name=name, create_date=create_date)

db.session.add(user_obj)

db.session.commit()

删:

User.query.filter(UserMod.id == id).delete()

db.session.commit()

或者 

User.query.filter_by(id=id).delete()

db.session.commit()

改:

User.query.filter(UserMod.id == id).update({'name': name)})

db.session.commit()

或者 

User.query.filter_by(id=id).update({'name': name)})

db.session.commit()

查:

获取所有: User.query.all()

获取id为1的 User.query.filter(User.id == 1).first()


版权声明:本文为admin3wwwww原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。