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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

会计基础模拟练习一(3)

会计基础模拟练习一(3) 下周一18号会计从业资格考试就要报名了,本人重点看的是会计基础和会计电算化,做了一下测试题,五十多分,较之前有了一些长进.很多之前重点复习的章节有了明显的提升,像后面的几章没怎么看,出错的概率就大大的提升了. 我觉得这个考试…

[2017-08-31]如何使用ruby同步markdown博文到博客园

这两天折腾了一下用ruby通过MetaWeblog接口把本博客同步到博客园,特此记录。 MetaWeblog MetaWeblog是一个专门关于博客的协议标准,通过xmlrpc,很简单的定义了新增、编辑、删除三个基本接口。 在博客园设置页签的最下方,保存按钮之…

MacOS中Dock栏的设置和使用技巧,新手必看

MacOS中Dock栏的设置和使用技巧,新手必看 Dock栏就是Mac放置常用应用程序和文件夹快捷方式的任务栏,为你访问这个应用和文件提供了非常方便的入口。 作为Mac用户最常使用的区域,要知道如何才能更高效的使用它,从而达到事半功倍的…

ldconfig deferred processing now taking place

在ubuntu下面安装软件,安装结束后,提示:ldconfig deferred processing now taking place 到网上查询了一下,大概意思是说:软件安装完了,是否要重启电脑。转载于:https://www.cnblogs.com/wangkongming/p/…

51Nod 1003 阶乘后面0的数量 | 思维

题意:n的阶乘后面0的个数,如果直接算出阶乘再数0的数量一定会超时的。因为102*5,所以求出5贡献的次数就行。#include "bits/stdc.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 510 …

史上超详细的flask_sqlalchemy连接mysql数据库

https://www.jianshu.com/p/1ba45bd6c351 PythonFlask安装:https://www.jianshu.com/p/cd1925e90eda Flask路径参数以及请求参数讲解:https://www.jianshu.com/p/54057b4f0437 首先安装pymysql,命令如下:pip install pymysql 安装…

中国移动技术愿景2020+

2019独角兽企业重金招聘Python工程师标准>>> 中国移动技术愿景2020 本文档白皮书是中国移动提出的在2020年及其之后的若干年内对产业各方面技术发展的构想,包括行业发展趋势,面向万物的数字化服务和对技术发展的看法。希望产业各方面能够开展…

jQuery对象与dom对象的转换

jQuery对象与dom对象的转换只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是 jquery对象。普通的dom对象一般可以通过$()转换成jquery对象。如:$(document.getElementByIdx_x("msg…

用sqlalchemy对mysql数据库增删改查demo

首先要搭建mysql服务器、安装mysql python驱动、安装sqlalchemy包, 我用的是windows环境,安装参考:https://blog.csdn.net/jishuwenming/article/details/80993840 完整demo 如下: --------------------- 作者:jishuw…

《计算机程序设计艺术》pdf

下载地址:网盘下载 内容简介 编辑本书作者D. E. Knuth是在计算机学界十分著名的学者,在本领域享有很高权威和盛名,他的这部著作是无数计算机专业人员的学习教材和参考读物,也是许多专业研究工作者经常阅读的经典。本书已被翻译为几…

Jsoup 抓取和数据页 认识HTTP头

推荐一本书:黑客攻防技术宝典.Web实战篇 ; 顺便留下一个疑问:能否通过jsoup大量并发訪问web或者小型域名server,使其瘫痪?其有用jsoup熟悉的朋友能够用它解析url来干一件非常无耻的事(源代码保密&#xff…

杭电划分问题

在做杭电做题时遇到好几个有关划分的题目,比如2050 折线分割平面、1290的献给母校的蛋糕,都是数学问题吧,感觉挺有做数学题的感觉的,在这里总结一下。 1、n个点最多把直线分成1n份,这个很好理解 2、n条直线最多把平面分…

flask + 蓝图 用 sqlalchemy 对 mysql 进行 增删查改 的 demo

main.py import uuid # UUID: 通用唯一标识符 # from flask import Flask from flask import Flask, request, json, Response from flask_sqlalchemy import SQLAlchemyfrom app.main.views import * from app.app01.views import * from app.app02.views import * from a…

UVA - 400 Unix ls

/*收获:1. 我觉得最大的收获是,了解了该怎么进行竖向的数据输出并且,以及《入门经典》的做法,并没有先转换为二维数组再输出,而是用了些别的技巧(好像也能算是技巧,具体的看代码吧,这个我也不太…

javascript中String的fromCharCode()方法

前几天遇到一个bug,后端的模板引擎在输出形如: <div title"111 aaa">内容</div> 这样的内容时,无法输出 空格,所以只能用 来代替: <div title"111 aaa">内容</div> 然后前端使用空格来切分title值: var arr1 title.split( ); 然后…

Zend Server更新至6.2版本——虚拟主机全方位管理

Zend Server自从发布6.0以来&#xff0c;并支持云服务&#xff0c;成为很多PHP程序所选择的Web服务器。 Zend Server 6.2版本从更新内容来看&#xff0c;解决了Web服务器与虚拟主机之间的协同管理。并在细节上&#xff0c;更注重性能控制。 具体更新如下&#xff1a; 虚拟主机管…

Flask 蓝图,数据库链接

蓝图 使用场景 如果代码非常多&#xff0c;要进行归类。不同的功能放在不同的文件&#xff0c;把相关的视图函数也放进去。 蓝图也就是对flask的目录结构进行分配&#xff08;应用于小&#xff0c;中型的程序&#xff09; 当然对于大型项目也可以通过 url_prefix 加前缀的…

python基础-02

常见的数据类型 列表 在python中&#xff0c;列表的创建可以是由[]两个方括号组成的。在其他语言中&#xff0c;被称之为数组。 列表里可以存放一组值&#xff0c;并且系统默认的给列表里的每一个元素以索引值&#xff0c;方便查找和使用。 如下&#xff1a; #创建一个列表&…

Flask扩展系列(八)–用户会话管理

安装和启用 遵循标准的Flask扩展安装和启用方式&#xff0c;先通过pip来安装扩展&#xff1a; $ pip install Flask-Login 接下来创建扩展对象实例&#xff1a; 1 2 3 4 5 from flask import Flask from flask.ext.login import LoginManager app Flask(__name__) login…

onmousemove和onmouseout事件的调用,和js使用双引号、单引号的时候应该注意的问题...

使用js的时候&#xff0c;统一使用双引号&#xff0c;然后通过反斜杠进行转义 ①如果同时使用单引号、和双引号的情况下容易出现问题&#xff0c;导致标签中表示的事件不能调用&#xff0c; ②导致由于标签没有封口而出现样式布局错误 1 <!DOCTYPE html>2 <html>3 …