Flask框架种使用ORM模型对MySQL数据库的管理

通过flask连接MySQL数据库后,使用ORM模型对数据库管理
ORM模型的优点:使用 ORM 做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。支持多个关系数据库引擎,包括流行的 MySQL 、 PostgreSQL 和 SQLite 。可以非常轻松的切换数据库。

1.创建数据库

创建用户,其中包括
用户id(int,主键,自增)
用户姓名(varchar,非空)
密码(varchar,非空)等字段
继承db.Model模型成为ORM模型

class User(db.Model):
	# 定义表名
    __tablename__ = "user"
    添加字段,使用db.Column映射成列属性,
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)

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

db.Column中常用的数据类型

类型名Python 类型说明
Integerint普通整数,一般是32位
SmallIntegerint取值范围小的整数,一般是 16 位
BigIntegerint 或 long不限制精度的整数
Floatfloat浮点数
Numericdecimal.Decimal定点数
Stringstr变长字符串
Textstr编程字符串,对较长或不限长度的字符串做了优化
Unicodeunicode变长 Unicode 字符串
UnicodeTextunicode变长 Unicode 字符串,对较长或不限长度的字符串做了优化
Booleanbool布尔值
Datedatetime.date日期
Timedatetime.time时间
DateTimedatetime.datetime日期和时间
Intervaldatetime.timedelta时间间隔
Enumstr一组字符串
PickleType任何 python 对象自动使用 Pickle 序列化
LargeBinarystr二进制文件

2.增加数据

首先创建对象,然后将对象添加到session中,最后同步到数据库中

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

3.查询数据

@app.route("/user/query")
def query_user():
    # 1.get查找:根据主键查找
    # user = User.query.get(1)
    # print(f"{user.id}: {user.username}-{user.password}")
    # 2.filter查找
    # 类列表的对象
    users = User.query.filter(User.username.like("%张%"))
    for user in users:
        print(user.username)
    return "数据查找成功"

四种查询方式

all返回一个QuerySet
fittler等同于sql中的where,返回的一个过滤后的QuerySet
exclude回一个新的QuerySet,它包含不满足查询参数的对象
get只有一个对象满足你的查询,也就是查询必须且只有一个返回符合的查询语句

三种获取数据方式

  • 第一种all
    all相当于查询所有字段的返回,select * from 表
    返回的Queryset类型,Queryset中包含的是表每一行返回的对象
  • 第二种values
    values相当于select 字段 from 表 返回的Queryset类型,Queryset中包含的是每一行数据字典的形式返回k代值字段,v代值数据
  • 第三种-values_list
    相当于select 字段 from 表 返回的Queryset类型,Queryset中包含的是每一行数据元组的形式返回字段数据

其他查询方式

返回QuerySet对象的

order_by()用来进行升序降序排列使用,默认升序,加-降序
distinct()去重和values搭配使用

不返回对象的

count*当我们只想查询 返回的条数的时候我们应该用count 比用first 要好,但当我们想要第一个返回的对象的时候我们可以用first
first/last

queryset中支持链式操作book=Book.objects.all().order_by(’-nid’).first()

模糊查询常用的操作

__gt大于>
__gte大于等于>=
__lt小于<
__lte小于等于<=
__exact精确等于 like ‘aaa’
__iexact精确等于 忽略大小写 ilike ‘aaa’
__contains包含 like ‘%aaa%’
__icontains包含,忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__in查询年龄在某一范围的学生Student.objects.filter(age__in=[10, 20, 30])
is null / is not null:__isnull 判空

4.修改数据

@app.route("/user/update")
def update_user():
    users = User.query.filter_by(username="张").first()
    # 相当于在会话当中已经完成修改操作,不需要db.session
    users.password = "9999"
    db.session.commit()
    return "数据修改成功"

5.删除数据

首先查找到对象,然后将从会话中删除,最后同步到数据库中

@app.route("/user/delete")
def delete_user():
    # 1.查找
    user = User.query.get(1)
    # 2.删除
    db.session.delete(user)
    # 3.将db。session中的修改,同步到数据库中
    db.session.commit()
    return "删除成功"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask是一个轻量级的Web框架,它并没有内置数据库连接和ORM功能,但是可以通过第三方库来实现这些功能,比如SQLAlchemy。 SQLAlchemy是一个强大的ORM库,可以与多种数据库进行交互,包括SQLite、MySQL、PostgreSQL等等。下面是使用Flask和SQLAlchemy连接数据库ORM的步骤。 1. 安装SQLAlchemy 可以通过pip命令来安装SQLAlchemy: ``` pip install SQLAlchemy ``` 2. 配置数据库连接 在Flask项目的配置文件中,可以配置数据库连接信息。以SQLite为例,配置如下: ```python SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/database.db' ``` 其中,`////path/to/database.db`为SQLite数据库的路径。 3. 创建SQLAlchemy实例 在Flask应用中,需要创建一个SQLAlchemy实例,用于管理数据库连接和ORM映射。可以在应用的工厂函数中创建SQLAlchemy实例,如下所示: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////path/to/database.db' db = SQLAlchemy(app) ``` 4. 定义模型类 在ORM中,每个数据表都对应一个模型类。可以通过继承SQLAlchemy提供的`db.Model`类来定义模型类。例如,定义一个`User`模型类: ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) def __repr__(self): return '<User %r>' % self.username ``` 在上面的代码中,`User`类继承了`db.Model`类,同时定义了`id`、`username`和`email`三个属性,分别对应数据表中的三个字段。`__repr__`方法用于在控制台中输出模型对象的信息。 5. 数据库迁移 在ORM中,模型类和数据表之间的映射是通过数据库迁移来实现的。可以使用Flask-Migrate扩展库来进行数据库迁移。 首先需要安装Flask-Migrate: ``` pip install Flask-Migrate ``` 然后在Flask应用中,创建一个`migrations`目录,用于存放迁移脚本: ``` flask db init ``` 接下来,生成一个迁移脚本: ``` flask db migrate -m "create users table" ``` 最后,执行迁移脚本,创建数据表: ``` flask db upgrade ``` 6. 数据库操作 使用SQLAlchemy进行数据库操作非常简单。例如,向`User`表中插入一条数据: ```python user = User(username='admin', email='admin@example.com') db.session.add(user) db.session.commit() ``` 查询数据: ```python users = User.query.all() ``` 更新数据: ```python user = User.query.filter_by(username='admin').first() user.email = 'newadmin@example.com' db.session.commit() ``` 删除数据: ```python user = User.query.filter_by(username='admin').first() db.session.delete(user) db.session.commit() ``` 以上就是使用Flask和SQLAlchemy进行数据库连接和ORM操作的基本步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值