前言:

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


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

Flask使用Flask-SQLAlchemy操作MySQL数据库的更多相关文章

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

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

  2. 13、Flask实战第13天:SQLAlchemy操作MySQL数据库

    安装MySQL 在MySQL官网下载win版MySQL 双击运行 后面根据提示设置密码然后启动即可,这里我设置的密码是:123456 我们可以通过Navicat客户端工具连接上MySQL addres ...

  3. flask中使用SQLAlchemy操作mysql的一些注意事项和坑

    一 ImportError: cannot import name 'db' 由于app最后才加载,所以其他文件,比如models.py不能从app.py导入任何变量, 要使用db可以先定义一个,之后 ...

  4. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  5. Python3:sqlalchemy对mysql数据库操作,非sql语句

    Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...

  6. python使用sqlalchemy连接mysql数据库

    环境:centos7+python2.7.5+sqlalchemy sqlalchemy是python当中比较出名的orm程序.在python中,使用sqlalchemy连接mysql数据库进行操作非 ...

  7. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  8. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  9. 转 用C API 操作MySQL数据库

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

  10. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

随机推荐

  1. Column Index out of range, 2 > 1 列索引的范围,2 > 1。

    Column Index out of range, 2 > 1  列索引的范围,2 > 1.这个问题是进行数据库查询的时候出现的. 因为查询sql语句时 只查询了 name 然后whil ...

  2. check

    private int AddNewstoDB(NewsModels newsModels, string dateTimeStr, string jsonStr, string cid, strin ...

  3. Spring MVC 的工作原理

    引自:https://www.cnblogs.com/xiaoxi/p/6164383.html SpringMVC的工作原理图: SpringMVC流程 1.  用户发送请求至前端控制器Dispat ...

  4. zookeeper-01 概述

    1. Zookeeper概念简介和应用场景 1.1.  概念简介 Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务 A.zookeeper是为别的分布式程序服务的 B.Z ...

  5. Windows Server 2012 RS 配置IIS8.0+发布网站

    一.配置iis 8.0 IIS 8.0 是 windows server 2012 自带的服务器管理系统.相比之前版本,IIS 8.0 安装和操作都更加简单,界面也很简洁,安装也很迅速. 1. 进入w ...

  6. February 9th, 2018 Week 6th Friday

    Every one of us want to ameliorate our own condition. You can only cure retail but you can prevent w ...

  7. 最大子序和的golang实现

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 输入: [-,,-,,-,,,-,], 输出: 解释: 连续子数组 [,-,,] 的和最大,为 ...

  8. 最长公共前缀的golang实现

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 输入: ["flower","flow",&quo ...

  9. 【JavaScript】获取当前页的URL与window.location.href

    原文:http://blog.csdn.net/yongh701/article/details/45688743 版权声明:本文为博主原创文章,未经博主允许欢迎乱转载,标好作者就可以了!感谢欣赏!觉 ...

  10. python五十九课——正则表达式的拓展内容

    演示正则表达式的拓展内容:函数:finditer(regex,string,[flags=0]):参数:和match.search.findall一样理解功能:将所有匹配的数据封装为一个一个的matc ...