Flask Web——数据库

MySQL

以下展示在代码中连接mysql数据库的操作。
首先需要安装mysql;之后需要在命令行中进入mysql(通过指令mysql -u root -p);进入mysql后,使用create database database_learn;创建名为database_learn的数据库;最后在代码中连接数据库,当pycharm命令行显示结果(1, )时,说明连接成果。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

HOST_NAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = ""
DATABASE = "database_learn"
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{
     USERNAME}:" \
                                        f"{
     PASSWORD}@{
     HOST_NAME}:{
     PORT}/{
     DATABASE}?" \
                                        f"charset=utf8"

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

在这里插入图片描述

使用Flask-SQLAlchemy创建表

class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100))
    password = db.Column(db.String(100))

db.create_all()

首先创建一个User类,并且它继承自db.Model类,所有ORM模型必须是db.Model的直接或间接子类。然后通过__tablename__属性,指定User模型映射到数据库中表的名称(即,待会儿使用SQLAlchemy创建的表名称就是__tablename__属性指定的名称)。接着定义三个db.Column类型的类属性,分别是id、username、password,只有使用db.Column定义的类属性,才会被映射到数据库表中称为字段。 在以上的数据库表字段定义中,将id定义为数据库类型中的整型,设置primary_key = True表示将id视为主键,传递autoincrement = True设置id自增长。username和password类型均为db.String,在数据库中表现为varchar(100)。最后通过db.create_all()把User模型映射成数据库中的表。
在这里插入图片描述

CRUD操作

可以直接使用ORM模型进行CRUD(增删改查)操作(前面定义的User类即一个ORM模型,因为它直接继承自db.Model),需要先把操作添加到会话中,通过db.session可以获取会话对象。会话对象在内存中,调用db.session.commit(),可以执行对应的操作,执行db.session.rollback(),可以回滚。

Create操作

通过ORM模型可以实现向表中添加数据的操作,使用的方法是db.session.add(x),其中x是对应数据库某张表的ORM模型实例,如,一个User类的实例。

@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 "用户添加成功!"

在这里插入图片描述
在database_learn数据库的user表中查看三条信息是否添加:
在这里插入图片描述
注:在创建User对象时,必须通过关键字参数为字段赋值,否则SQLAlchemy将不知道给哪个字段赋值,从而报错。

Read操作

可以使用db.Model内置的query实现Read操作。query上的方法分为提取方法和过滤方法两大类,先介绍提取方法。

@app.route('/user/fetch')
def user_fetch():
    #👇获取user中的全部数据
    users = User.query.all()
    print(users)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值