Flask #python后端框架学习笔记(13-18p)

1.连接数据库

HOSTNAME = "127.0.0.1"
POST = 3306
USERNAME = "root"
PASSWORD = "root"
DATABASE = "study"

app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{POST}/{DATABASE}?charset=utf8mb4"
# 在app.config中设置好连接数据库的信息,
# 然后使用SQLAlchemy(app)创建一个dp对象
# SQLAlchemy会自动读取app.config中连接数据库的信息
db = SQLAlchemy(app)

1.1测试数据库连接是否正常的方法

如果数据库成功连接后就可以注销
解决不了的情况下https://www.bilibili.com/video/BV17r4y1y7jJ/?p=13

with app.app_context():
    with db.engine.connect() as conn:
        rs = conn.execute(text("select 1"))
        print(rs.fetchone())

2.数据库创建 和 该数据的表创建

class User(db.Model):
    __tablename__ = "user"
    # id指定为Integer整型类型,primary_key为true时意思是每一个id都有主键,autoincrement为自动添加下一个
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    # username指定为String字符串类型(100为最大长度),nullable=False为字段不能为空
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)

3.数据库创建后应用方法

一开始时可用,后面映射表后换更便捷的方式

# with app.app_context():
#     db.create_all()

在PyChorm下栏目中的Terminal
注意:①首次用则执行三步;②以后的更改该都只需要执行下面两步

# ORM模型映射成表的三步
# 1.flask db init:这步只需要执行一次
# 2.flask db migrate:识别ORM模型的改变,生成迁移脚本
# 3.flask db upgrade:运行迁移脚本,同步到数据库中

3.1增加数据

@app.route("/user/add")
def add_user():
    # 1.创建ORM对象
    user = User(username="法外狂徒张三", password='111111')
    # 2.将ORM对象添加到db.session中
    db.session.add(user)
    # 3.将db.session中的改变同步到数据库中
    db.session.commit()
    return "用户创建成功!"

3.2查找数据

@app.route("/user/query")
def query_user():
    # 1.get查找:根据主键查找 一般用于查找一条数据
    # user = User.query.get(1)
    # print(f"{user.id}:{user.username}-{user.password}")
    # 2.filter_by根据关键字参数过滤 一般用于查找多条数据
    # users为Query类数组 可做循环
    users = User.query.filter_by(username="法外狂徒张三")
    # print(type(users))
    for user in users:
        print(user.username)
    return "数据查找成功!"

3.3数据库修改

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

3.4数据库的删除

@app.route("/user/delete")
def delete_user():
    # 1.查找
    user = User.query.get(1)
    # 2.从db.session中删除
    db.session.delete(user)
    # 3.将db.session中的修改,同步到数据库中
    db.session.commit()
    return "数据删除成功!"

4.外键与表关系理解的数据库

class Article(db.Model):
    __tablename__ = "article"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(200), nullable=False)
    content = db.Column(db.Text, nullable=False)

    # 添加作者的外键
    author_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    # backref:会自动的给User模型添加一个articles的属性,用来获取文章列表
    author = db.relationship("User", backref="articles")

4.1文章添加

@app.route("/article/add")
def article_add():
    article1 = Article(title="Flask学习大纲", content="这里是内容!")
    article1.author = User.query.get(2)

    article2 = Article(title="Mask学习大纲", content="这里是内容2!")
    article2.author = User.query.get(2)

    # 添加到session中
    db.session.add_all([article1, article2])
    # 同步session中的数据到数据库中
    db.session.commit()
    return "文章添加成功!"
}

4.2文章查找

@app.route("/article/query")
def query_article():
    user = User.query.get(2)
    for article in user.articles:
        print(article.title)
    return "文章查找成功!"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值