怎么在Python中使用瓶框架操作数据库?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一、ORM
<强> 1。ORM >强的全称是:对象关系映射:对象,关系映射。主要的功能是实现模型对象到关系型数据库数据的映射。说白了就是使用通过对象去操作数据库。
<强> 2。操作过程图:强>
<强> 3。优点:强>
(1)。不需要编写SQL代码,这样可以把精力放在业务逻辑处理上。
(2)。使用对象的方式去操作数据库。实现数据模型与数据库的解耦,利于开发。
<强> 4。缺点:强>
性能较低。
二,Flask-SQLAlchemy的介绍
<强> 1。设置配置信息强>
在开发中,一般是把一些配置信息都写在一个单独的文件中,如settings.py。这样一些安全信息就可以得到保存!
重点字段有:
数据库的指定是使用URL的方式来指定的:& # 39;mysql://用户名:密码@服务器地址:端口号/数据库名& # 39;,但是连接SQLite是使用这用格式:SQLite://///foo/绝对路径。db,使用////开头
SQLALCHEMY_DATABASE_URI=& # 39; myslq://根:meiyou@127.0.0.1:3306/测试# 39;
SQLALCHEMY_POOL_RECYCLE:设置多少秒后自动回收连接,对MySQL来说,默认是2小时
SQLALCHEMY_ECHO:设置真正的话,查询时会显示原始SQL语句。
SQLALCHEMY_TRACK_MODIFICATIONS:动态追踪修改设置。
<强> 2。常用的SQLAlchemy字段类型:强>
整数字符串
Numberic
布尔日期
<强> 3。常用的SQLAlchemy列选项强>
primary_key:如果为真的,表示主键.Flask中没有自动生成主键,需要自定义。
独特:为正确的,设置该列不能有重复值,如用户名,邮箱,手机号
nullable:为真正的话可以零
为默认值:设置默认值
指数:为正确的,设置该列为索引,默认索引是主键。
<强> 4。关系选项强>
backref:在关系的另一模型中添加的反向引用,查询时起很大作用。
二级:用于多对多关系中表的名字
主要加入:
三,Flask-SQLAlchemy的基本操作
在Flask-SQLAlchemy中的增,删,改操作是由数据库会话(db.session)管理的。也就是说,在准备把数据写入数据库前,要先将数据添加(add())到会话中,然后使用commit()提交会话。
在Flask-SQLAlchemy中的查询操作都是通过查询对象操作数据库。基本的查询是返回表中的所有数据,还可以使用过滤器进行更精确的数据库查询。
<强> 1。常用查询过滤器:强>
过滤器得到的还只是一些对象,需要使用执行器来获取真正的数据。
<代码>过滤器()代码>:把过滤器添加到原查询上,返回一个新查询,需要使用模型类名去获取字段来进行比较。
<代码> filter_by() 代码>:把等值(只能使用=比较操作)过滤器添加到查询上,返回一个新查询。
<代码> order_by() 代码>:根据指定条件对查询结果进行排序,返回一个新查询。
<代码> group_by() 代码>:根据指定条件对原查询结果进行分组,返回一个新查询。
<强> 2。常用查询执行器强>
<代码>()代码>:以列表的形式返回查询的所有结果
<代码>第()代码>:返回查询的第一个结果,
<代码> first_or_404() 代码>:同第(),只不过如果没有找到的话,返回404错误
<代码>()代码>:返回指定主键对应的行,
<代码> get_or_404() 代码>:返回指定主键对应的行,如不存在,返回404错误
<代码> count() 代码>:返回查询结果的数量
<代码>随意翻阅()代码>:返回一个随意翻阅对象,包含指定范围内的结果。
<强> 3。查询条件强>
<代码> startswith (& # 39; xx # 39;) 代码>:查询以xx开头的所有数据
<代码> endswith (& # 39; xx # 39;) 代码>:查询以xx结尾的所有数据
<代码> not_() 代码>:取反
<代码>,()代码>:返回和()条件满足的所有数据
<代码> or_() 代码>:返回或()条件满足的所有数据
<强>示例:强>
得到flask import 瓶 得到flask_sqlalchemy import  SQLAlchemy 得到settings import 配置 app =,瓶(__name__) app.config.from_object(配置) #,创建数据库实例对象 时间=db SQLAlchemy(应用) class 角色(db.Model): “““才能创建角色模型类“““ 时间=__tablename__ 才能;& # 39;角色# 39; 时间=id 才能;db.Column (db.Integer, primary_key=True) name 才能=,db.Column (db.String(64),独特的=True) #才能,描述角色表和用户表的关系, #才能,第一个参数为多那端的模型类名 #才能,第二个参数backref:为模型类名声明新属性,这样就可以实现反向查询 #才能,第三个参数决定了什么时候从数据库中查询数据 us 才能=,db.relationship(& # 39;用户# 39;,,backref=& # 39;角色# 39;,,懒=& # 39;动态# 39;) def 才能__repr__(自我): ,,,return & # 39;角色:% & # 39;,% self.name class 用户(db.Model): “““才能创建用户模型类“““ #,才能设置表名 时间=__tablename__ 才能;& # 39;用户# 39; #,才能添加主键 时间=id 才能;db.Column (db.Integer, primary_key=True) #,才能用户名 name 才能=,db.Column (db.String(30),独特的=True) email 才能=,db.Column (db.String(64),独特的=True) 时间=password 才能;db.Column (db.String (64)) #,才能定义一个外键 role_id 才能=,db.Column (db.Integer, db.ForeignKey (& # 39; roles.id& # 39;)) def 才能__repr__(自我): ,,,return & # 39;用户:% & # 39;,% self.name if __name__ ==, & # 39; __main__ # 39;: #,才能先删除表 db.drop_all才能() #,才能创建表 db.create_all才能() #,才能添加数据 app.run才能()怎么在Python中使用瓶框架操作数据库