Flask sqlalchemy,sqlalchemy flask-sqlalchemy

  Flask sqlalchemy,sqlalchemy flask-sqlalchemy

  本文主要介绍Flask-Sqlalchemy的基本用法,通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。

  00-1010 I:基本用法:1:安装环境:2:组件初始化:3:构建模型类:2:数据操作:13360添加数据:2:查询数据:3:修改数据:4:删除数据:3:高级机制:1:刷新数据:2:多表查询:

  

目录

 

  

一: 基本使用:

 

  pip安装烧瓶-sqlalchemy

  pip安装pymysql

  

1:环境的安装:

 

  2.1:基本配置

  13360首先安装两个依赖包。

  2.配置数据库的连接:app . config[ sqlalchemy _ database _ uri ]=" MySQL 3360//root 3360 MySQL @ 192 . 168 . 44 . 1233603306/test 39 "

  3:关闭对数据库的跟踪:app . config[ sqlalchemy _ track _ modifications ]=false

  4:打开输出sql语句:app . config[ sqlalchemy _ echo ]=true

  python2和python3名称不一致的两种处理方法。

  从烧瓶进口烧瓶

  从flask_restful导入Api,资源

  从flask_sqlalchemy导入sqlalchemy

  导入pymysql

  pymysql.install_as_MySQLdb()

  python2中的数据库客户端:MySqldb

  python3中的数据库客户端:pymysql

  解决方案1:让python2和python3包进行转换。

  导入pymysql

  pymysql.install_as_MySQLdb()

  方案二:表示只使用python3包,不使用python2包。

  app . config[ SQLALCHEMY _ DATABASE _ URI ]= MySQL py MySQL ://root : MySQL @ 192 . 168 . 44 . 33306/test 39

  app=Flask(__name__)

  db=SQLAlchemy(app)

  # app . config[ sqlalchemy _ database _ uri ]= MySQL ://账号3360密码@数据库ip地址3360端口号/数据库名称

  app . config[ SQLALCHEMY _ DATABASE _ URI ]= MySQL ://root : MySQL @ 192 . 168 . 44 . 3603306/test 39

  # app . config[ SQLALCHEMY _ BINDS ]={ }

  #关闭数据库修改跟踪操作[提高性能]:

  app . config[ SQLALCHEMY _ TRACK _ MODIFICATIONS ]=False

  #打开在输出底部执行的sql语句

  app . config[ SQLALCHEMY _ ECHO ]=True

  #开启数据库自动提交功能【一般不使用】

  app . config[ SQLALCHEMY _ COMMIT _ ON _ tear down ]=True

  @app.route(/)

  def hello_word():

  回复“你好,单词”

  if __name__==__main__:

  打印(app.url_map)

  app.run(host=0.0.0.0 ,port=8000,debug=True)

  2.2:按出厂方法配置:

  1.数据库配置信息存储在环境类中并被加载。

  2.因为不一定要先创建数据库对象和app对象,所以可以先创建数据库对象,然后在创建app对象后再关联它。

  3.相关函数是数据库对象调用。

  自己的init_app()方法。需要传入app对象。

  settings中配置:

  

# 开发环境

 

  主模块:

  

from flask import Flask, make_response, Response, request, current_app

 

  

 

  

3:构建模型类:

 

  

  • 模型类必须继承 db.Model, 其中 db 指对应的组件对象

  • 表名默认为类名小写, 可以通过 __tablename__类属性 进行修改

  • 类属性对应字段, 必须是通过 db.Column() 创建的对象

  • 可以通过 create_all() 和 drop_all()方法 来创建和删除所有模型类对应的表

  • 注意点: 如果没有给对应字段的类属性设置default参数, 且添加数据时也没有给该字段赋值, 则 sqlalchemy会给该字段设置默认值 None

 

  <模型类创建案例>

  

from flask import Flask

 

  

 

  

二:数据操作:

 

  

 

  

1:增加数据:

 

  1:给模型对象设置数据 可以通过 初始化参数 或者 赋值属性 两种方式
2:session.add(模型对象) 添加单条数据到会话中, session.add_all(列表) 添加多条数据到会话中
3:sqlalchemy 会 自动创建事务, 并将数据操作包含在事务中, 提交会话时就会提交事务,事务提交失败会自动回滚。

  

from flask import Flask

 

  

 

  

2:查询数据:

 

  

 

  

 

  1:数据的准备工作:

  

from flask import Flask

 

  2:进行查询操作:

  

	# 1:查询所有的用户数据:

 

  

 # 6:查询名字和邮箱都以li开头的所有用户[2种方式]

 

  

# 11:查询年龄从小到大第2-5位的数据

 

  

 

  

3:修改数据:

 

  1: 推荐采用方案二:
2: 一条语句, 被网络IO影响程度低, 执行效率更高
3:查询和更新在一条语句中完成, 单条SQL具有原子性, 不会出现更新丢失问题
4:会对满足过滤条件的所有记录进行更新, 可以实现批量更新处理

  方案一:先查询再更新:

  

from flask import Flask

 

  方案二:配合查询过滤器filter() 和 更新执行器update() 进行数据更新

  

 Goods.query.filter(Goods.name == 方便面).update({count: Goods.count - 1})

 

  

 

  

4:删除数据:

 

  方案一:

  

 # 方式1: 先查后删除

 

  方案二:

  

# 方式2: delete子查询

 

  

 

  

三:高级机制:

 

  

 

  

1:刷新数据:

 

  1:Session 被设计为数据操作的执行者, 会先将操作产生的数据保存到内存中。
2: 在执行 flush刷新操作 后, 数据操作才会同步到数据库中。
3:隐式刷新操作:1:提交会话 2:查询操作(包括更新和删除中的子查询)。
4:手动刷新:session.flush()

  刷新机制的理解:

  

答:刷新机制就是通过事务,将SQl语句执行一遍,然后将执行结果存储在变量中,但是数据库做回滚操作。导致变量中有了新值,但是数据库却没有改变。

 

  

 

  

 	goods = Goods(name=方便面, count=20)

 

  

 

  

2:多表查询:

 

  2.1:外键关联查询:

  生成主表对象后,必须刷新数据库,否则后面无法使用主表对象的属性。

  1:主从表的定义:

  

# 用户表 一 一个用户可以有多个地址

 

  2:添加关联数据:

  

def index():

 

  3:关联查询:

  

# 1.先根据姓名查找到主表主键

 

  到此这篇关于Flask-Sqlalchemy的基本使用详解的文章就介绍到这了,更多相关Flask-Sqlalchemy 使用内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: