https://www.jianshu.com/p/6ae0d30a5539

前言:

Flask-SQLAlchemy是一个Flask扩展,简化了在Flask程序中使用SQLAlchemy的操作。SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy提供了高层ORM,也提供了使用数据库原生SQL的低层功能。

学习了Flask-SQLAlchemy下MySQL的配置和增删改查,供初学者作为参考。(python3+flask)


一、pip安装扩展库

>>>pip3 install flask-sqlalchemy

>>>pip3 install flask-mysqldb


二、配置并初始化数据库

SQLALCHEMY_DATABASE_URI ,配置使用的数据库URL,而配置MySQL的URL格式为:

mysql://username:password@hostname/database

SQLALCHEMY_TRACK_MODIFICATIONS ,设置成True(默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。


三、创建数据库


四、定义模型

1、最常使用的SQLAlchemy列选项

primary_key    | 如果设为True,这列就是表的主键

unique               | 如果设为True,这列不允许出现重复的值

index                  | 如果设为True,为这列创建索引,提升查询效率

nullable              | 如果设为True,这列允许使用空值,False则不允许使用空值

default                | 为这列定义默认值

2、一对多关系

添加到Variable模型中的env_id列被定义为外键,就是这个外键建立起了关系。

传给db.ForeignKey()的参数'environments.id'表明,这列的值是environments.id表中行的id值。

3、关系的面向对象视角

添加到Environments模型中的variable属性代表这个关系的面向对象视角。对于一个Environments类的实例,其variable属性将返回与角色相关联的用户组成的列表。

db.relationship()的第一个参数表明这个关系的另一端是哪个模型。

db.relationship()的backref参数向Environments模型中添加一个variable属性,从而定义反向关系。

db.relationship()的lazy=dynamic参数表明:不加载记录,但提供加载记录的查询。


五、数据库操作

1、创建表

>>> db.create_all()

2、删除表

>>> db.drop_all()

3、插入行

#将variable添加到会话中

>>>db.session.add(variable)

#commit()方法提交会话

>>>db.session.commit()

4、 查询数据

(1)all(查询全部数据)

Environments.query.all()

(2)filter_by查询(精确查询)

Environments.query.filter_by(id=id).first()

(3)join(联表一对多查询)

Variable.query.filter_by(env_id=env_id,id=id).join(Environments,Variable.env_id == Environments.id).first_or_404()

(4)count(返回查询结果的数量)

Environments.query.filter_by(id=id).count()

5、删除数据

db.session.delete(variablelists)

db.session.commit()

6、删除多条数据

variablelists= Variable.query.filter_by(env_id=env_id).all()

for var in variablelists:

db.session.delete(var)

db.session.commit()


以上,希望对你有所帮助~

作者:小喜_ww
链接:https://www.jianshu.com/p/6ae0d30a5539
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Flask使用Flask-SQLAlchemy操作MySQL数据库相关推荐

  1. 【tips】ORM - SQLAlchemy操作MySQL数据库

    优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...

  2. FastAPI 结合 SQLAlchemy 操作 MySQL 数据库

    文章目录 1. 安装 SQLAlchemy 2. 创建数据库 3. SQLAlchemy 连接 MySQL 4. 创建数据模型 5. 创建 Pydantic 模型 6. crud 工具 7. main ...

  3. sqlalchemy 使用mysql_使用SQLALchemy连接MySql数据库并进行操作

    "导语:这期主要学一下利用SQLALchemy连接MySql数据库以及对数据库的增删改查的操作,可能代码部分很多还不能理解,我觉得像一些固定写法先用着(比如引入的类等),再慢慢体会缘由&qu ...

  4. pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库

    pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库 在pandas中读取表类文件的时候有一个参数chunksize,只要指定了这个参数的数值,那么得到的结果就不 ...

  5. sqlalchemy mysql教程_python使用SQLAlchemy操作MySQL

    SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...

  6. sqlalchemy mysql_使用SQLAlchemy操作MySQL

    SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...

  7. python mysql工具类_Python工具类(一)—— 操作Mysql数据库

    如何调用直接看__main__函数里如何调用此工具类就阔以啦! # encoding=utf-8 import pymysql # 导入所有Mysql配置常量,请自行指定文件 from conf.se ...

  8. Python FastAPI 框架 操作Mysql数据库 增删改查

    2 比 1 更容易理解,可以先看2(单文件级别) 1.FastAPI 框架 操作Mysql数据库(项目多文件级别) FastAPI 可以使用任何您想要的关系型数据库. 在这里,让我们看一个使用着SQL ...

  9. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  10. c 获取mysql列数据_转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,"C API函数描述". 函数 ...

最新文章

  1. 卧槽!看不懂这些动图,你不配做个程序员
  2. 开源阅读书源_安卓开源无广告追书神器阅读App
  3. 毕业的答辩需要的要求(从校方的角度)
  4. hdu 1254(dfs+bfs+优先队列)
  5. django orm级联_Django数据表关联关系映射(一对一、一对多、多对多)
  6. 解决: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  7. 数据湖,已成为海量数据存储与分析的重要承载方式
  8. linux释放cache
  9. 关于深度学习框架Hamaa与Python API文档生成工具Sophon
  10. linux内存源码分析 - 伙伴系统(初始化和申请页框)
  11. 阿里云发布ET环境大脑 对抗雾霾、排污和自然灾害
  12. 三星帝国的风险:四大业务同荣同损
  13. SPSS之单样本的T检验
  14. 【渝粤教育】电大中专药理学基础作业 题库
  15. 二十一世纪大学英语读写教程学习笔记(原文)——7 - I Became Her Target(我成了她的靶子)
  16. java+桌球小游戏图片_Java桌球小游戏
  17. DSP CCS12.00 芯片:TMS320F28335 ADC 的运用
  18. APP系统开发模式一共有哪几种?
  19. ipv6u前缀地址数中/32,/48,/64含义跟一些相关资料
  20. 出现错误“subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1”解决方法

热门文章

  1. iOS UIModalPresentationFormSheet风格下的键盘隐藏
  2. MVC应用程序显示RealPlayer(rm)视频
  3. 【原创】指针和下标的10条对比
  4. Linux source用法(转)
  5. java 控制jsp_JSP学习之Java Web中的安全控制实例详解
  6. 代码 抠图_3 行 Python 代码 5 秒抠图的 AI 神器,根本无需 PS,附教程
  7. oem是代工还是贴牌_代加工和贴牌加工的区别是什么
  8. spark的流失计算模型_使用spark对sparkify的流失预测
  9. leetcode1451. 重新排列句子中的单词(排序)
  10. 如何成为一个优秀的程序员_如何成为一名优秀的程序员