flask 数据库 *** 作

flask 数据库 *** 作,第1张

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()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/905291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存