数据库的增删改查:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:123456@127.0.0.1:3306/demo"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
class Book(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
@app.route("/", methods=["GET", "POST"])
def index():
# 增
res = Book()
res.name = "一本书名" # 设置 name
db.session.add(res) # 逻辑添加
db.session.commit() # 提交
# 改
# 常见的过滤器有 filter 与 filter_by
# filter: 对象类.属性 == str
# filter_by: 属性 = str
# 常见的执行器有 first 与 all
# first: 返回第一个对象
# all: 返回一个对象集 list
res = Book.query.filter(Book.name == "一本书名").first() # 先查询获取修改的对象
res.name = "换了本书" # 直接修改属性
db.session.commit() # 直接提交无需逻辑添加
# 查
book = Book.query.filter(Book.name == "换了本书").first() # 查询操作
print(book.name) # 打印书名
# 删
res = Book.query.filter(Book.name == "换了本书").first() # 先查询获取删除的对象
db.session.delete(res) # 逻辑删除
db.session.commit() # 提交
return "操作成功"
if __name__ == "__main__":
# db.create_all() 如果没有表 创建表
app.run(debug=True)
主键外键与逻辑关联:
def Book(db.Model):
id = db.Column(db.Integer, primary_kay = True) # 设置图书主键
name = db.Column(db.String(64))
pub_id = db.Column(db.Integer, db.ForeignKey("publisher.id")) # 设置外键对应出版社 id
def Publisher(db.Model):
id = db.Column(db.Integer, primary_kay = True) # 设置出版社主键
name = db.Column(db.String(64))
books = db.relationship("Book", backref="to_publish") # 逻辑关联,能查询到当前出版社下的所有书籍