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