博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask使用Flask-SQLAlchemy操作MySQL数据库
阅读量:7067 次
发布时间:2019-06-28

本文共 1799 字,大约阅读时间需要 5 分钟。

前言:

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()


 

 

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

 

作者:

出处:
如果对您有帮助,请关注我的同名简书:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的文章
烟台汽车产业提速 上汽通用东岳基地产值逾5000亿
查看>>
提升糖尿病诊疗规范 “2618糖脂工程”启动
查看>>
北京出台地方性法规保护非遗 境外组织可依规在京做调查
查看>>
全国信访局长会议:确保网上信访好用管用
查看>>
广东湛江破获特大走私香烟案 抓获涉案嫌疑人21名
查看>>
扔掉代码表!用RNN“破解”摩斯电码
查看>>
纯css制作圆角矩形
查看>>
一只菜鸡的半年技术博客之路
查看>>
世界杯千万级直播高稳定的挑战和实践
查看>>
UCloud基于OpenvSwitch卸载的高性能25G智能网卡实践
查看>>
javaScript的数据结构与算法(二)——链表
查看>>
Cointext无需联网秒转BCH,但也要理性看待不足
查看>>
写给 Android 开发的小程序布局指南,Flex 布局!
查看>>
ReactNative之AsyncStorage本地存储
查看>>
手把手教你撸一个 Webpack Loader
查看>>
冒泡和快速排序
查看>>
每天阅读一个 npm 模块(6)- pify
查看>>
MySQL索引
查看>>
HeyUI组件库12月更新日志:Clipboard复制剪切板,Avatar头像
查看>>
十大监控工具,值得一试
查看>>