Flask使用Flask-SQLAlchemy操作MySQL数据库
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数据库相关推荐
- 【tips】ORM - SQLAlchemy操作MySQL数据库
优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...
- FastAPI 结合 SQLAlchemy 操作 MySQL 数据库
文章目录 1. 安装 SQLAlchemy 2. 创建数据库 3. SQLAlchemy 连接 MySQL 4. 创建数据模型 5. 创建 Pydantic 模型 6. crud 工具 7. main ...
- sqlalchemy 使用mysql_使用SQLALchemy连接MySql数据库并进行操作
"导语:这期主要学一下利用SQLALchemy连接MySql数据库以及对数据库的增删改查的操作,可能代码部分很多还不能理解,我觉得像一些固定写法先用着(比如引入的类等),再慢慢体会缘由&qu ...
- pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库
pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库 在pandas中读取表类文件的时候有一个参数chunksize,只要指定了这个参数的数值,那么得到的结果就不 ...
- sqlalchemy mysql教程_python使用SQLAlchemy操作MySQL
SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...
- sqlalchemy mysql_使用SQLAlchemy操作MySQL
SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社 ...
- python mysql工具类_Python工具类(一)—— 操作Mysql数据库
如何调用直接看__main__函数里如何调用此工具类就阔以啦! # encoding=utf-8 import pymysql # 导入所有Mysql配置常量,请自行指定文件 from conf.se ...
- Python FastAPI 框架 操作Mysql数据库 增删改查
2 比 1 更容易理解,可以先看2(单文件级别) 1.FastAPI 框架 操作Mysql数据库(项目多文件级别) FastAPI 可以使用任何您想要的关系型数据库. 在这里,让我们看一个使用着SQL ...
- c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...
- c 获取mysql列数据_转 用C API 操作MySQL数据库
用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,"C API函数描述". 函数 ...
最新文章
- 卧槽!看不懂这些动图,你不配做个程序员
- 开源阅读书源_安卓开源无广告追书神器阅读App
- 毕业的答辩需要的要求(从校方的角度)
- hdu 1254(dfs+bfs+优先队列)
- django orm级联_Django数据表关联关系映射(一对一、一对多、多对多)
- 解决: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- 数据湖,已成为海量数据存储与分析的重要承载方式
- linux释放cache
- 关于深度学习框架Hamaa与Python API文档生成工具Sophon
- linux内存源码分析 - 伙伴系统(初始化和申请页框)
- 阿里云发布ET环境大脑 对抗雾霾、排污和自然灾害
- 三星帝国的风险:四大业务同荣同损
- SPSS之单样本的T检验
- 【渝粤教育】电大中专药理学基础作业 题库
- 二十一世纪大学英语读写教程学习笔记(原文)——7 - I Became Her Target(我成了她的靶子)
- java+桌球小游戏图片_Java桌球小游戏
- DSP CCS12.00 芯片:TMS320F28335 ADC 的运用
- APP系统开发模式一共有哪几种?
- ipv6u前缀地址数中/32,/48,/64含义跟一些相关资料
- 出现错误“subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1”解决方法
热门文章
- iOS UIModalPresentationFormSheet风格下的键盘隐藏
- MVC应用程序显示RealPlayer(rm)视频
- 【原创】指针和下标的10条对比
- Linux source用法(转)
- java 控制jsp_JSP学习之Java Web中的安全控制实例详解
- 代码 抠图_3 行 Python 代码 5 秒抠图的 AI 神器,根本无需 PS,附教程
- oem是代工还是贴牌_代加工和贴牌加工的区别是什么
- spark的流失计算模型_使用spark对sparkify的流失预测
- leetcode1451. 重新排列句子中的单词(排序)
- 如何成为一个优秀的程序员_如何成为一名优秀的程序员