ORM模型学习(一)

71 阅读1分钟

CRUD操作

操作后都需要对数据库进行commit更新

Create操作

使用ORM模型创建一个对象,然后添加到会话中,在进行commit操作即可,示例代码如下。

@app.route('/user/add')  
def user_add():
    user1 = User(username="张三", password="111111")  
    user2 = User(username="李四", password="222222")  
    user3 = User(username="王五", password="333333")  
    db.session.add(user1)  
    db.session.add(user2)  
    db.session.add(user3)  
    db.session.commit()  
    return "用户添加成功"

Read操作

查询操作有很多filter、filter_by、orderby,示例代码如下。

@app.route("/user/query")  
def user_query():  
    # 1.get查找:根据主键查找  
    # user = User.query.get(1)  
    # print(f"{user.id}:{user.username}:{user.password}")  
    # 2.filter_by查找 获得Query对象  
    users = User.query.filter_by(username="张三")  
    for user in users:  
        print(user.username)  
    return "数据查找成功"

Update操作

查询要修改的数据进行修改,然后同步数据库,示例代码如下。

@app.route("/user/update")  
def user_update():  
    users = User.query.filter_by(username="张三").first()  
    users.password = "222222"  
    db.session.commit()  
    return "数据修改成功"

Delete操作

查询要删除的数据进行删除,然后同步数据库,示例代码如下。

@app.route("/user/delete")  
def user_delete():  
    user = User.query.get(1)  
    db.session.delete(user)  
    db.session.commit()  
    return "数据删除成功"

ORM的表关系

表关系一般分为三种:一对一、一对多、多对多

添加外键

想要通过作者信息获取到其所有的文章,要在user和article中建立关系。通过backref或back_relationship两种方式,前者会进行自动绑定后者需要在两端同时绑定(多人开发推荐后者)

class Article(db.Model):  
    __tablename__ = "article"  
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  
    tile = db.Column(db.String(200), nullable=False)  
    content = db.Column(db.Text, null=False)  
  
    # 添加作者的外键  
    author_id = db.Column(db.Integer, db.ForeignKey("user.id"))  
    author = db.relationship("User", backref="articles")