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() 移除会话
    
  • 相关阅读:
    intellij idea 修改web端口号
    intellij idea有时候有时候服务器报错500
    由于没有更新主分支的代码,总是报警
    intellij idea 快捷键
    intellij idea 修改文件名失败
    [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟
    [Introduction to programming in Java 笔记] 1.3.7 Converting to binary 十进制到二进制的转换
    C++学习笔记-2-构造函数和析构函数
    python学习笔记--随时更新
    C++学习笔记-1-自增和自减运算符
  • 原文地址:https://www.cnblogs.com/wml3030/p/14182566.html
Copyright © 2011-2022 走看看