zoukankan      html  css  js  c++  java
  • flask02

    数据库的基本操作

    在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。
    会话用 db.session 表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 db.session.commit() 方法提交会话。
    在 Flask-SQLAlchemy 中,查询操作是通过 query 对象操作数据。
    最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询。

    在市域函数中定义模型类

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    
    #设置连接数据库的URL
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
    #设置数据库追踪信息,压制警告
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    #创建SQLAlchemy对象,读取app中配置信息
    db = SQLAlchemy(app)
    #定义角色模型(一方)
    class Role(db.Model):
        # 定义表名
        __tablename__ = 'roles'
        # 定义列对象
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(64), unique=True)
        #设置关系属性,方便查询使用
        us = db.relationship('User', backref='role')
        #重写__repr__方法,方便查看对象输出内容
        def __repr__(self):
            return 'Role:%s'% self.name
    
    #定义用户模型类(多方)
    class User(db.Model):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(64), unique=True, index=True)
        email = db.Column(db.String(64),unique=True)
        password = db.Column(db.String(64))
        role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    
        def __repr__(self):
            return 'User:%s'%self.name
    if __name__ == '__main__':
        #删除所有和db相关联的表
        db.drop_all()
        #创建所有和db相关联的表
        db.create_all()
        app.run(debug=True)
    

    二,关键代码格式,说明

    一对多关系

    class Role(db.Model):
        ...
        #关键代码
        us = db.relationship('User', backref='role', lazy='dynamic')
        ...
    
    class User(db.Model):
        ...
        role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    

    常见的操作语句

    db.session.add(obj) 添加对象
    db.session.add_all([obj1,obj2,..]) 添加多个对象
    db.session.delete(obj) 删除对象
    db.session.commit() 提交会话
    db.session.rollback() 回滚
    db.session.remove() 移除会话
    
  • 相关阅读:
    ubuntu 17.10 安装后的应用软件安装
    设计模式之组合模式(Composite)
    设计模式之桥接模式(Bridge)
    设计模式之外观模式(Facade)
    设计模式之代理模式(Proxy)
    Linux设备驱动剖析之IIC(三)
    Linux设备驱动剖析之IIC(二)
    Linux设备驱动剖析之IIC(一)
    Linux设备驱动剖析之SPI(四)
    Linux设备驱动剖析之SPI(三)
  • 原文地址:https://www.cnblogs.com/wml3030/p/14182566.html
Copyright © 2011-2022 走看看