eclipse连接mysql_专题一、flask构建mysql数据库正确姿势

58c52a3957c08702c648f6c33d2837a3.pnga1140ebbbf838e9f4a879517c648a60f.png每周壹总结,一起共同充电第121篇

应用程序最核心的就是数据,每天我们写程序其实也是在处理数据的过程,那么很有必要系统性的讲讲和梳理python的flask框架是如何进行数据交互操作的。

趁这3天假期,分4篇内容来系统的讲讲,今天先分享第一篇。

一、flask构建mysql数据库的正确姿势。

二、flask常用的增删改查用法。

三、flask数据的一对多和多对多的关联查询。

四、flask实战的迁移数据库

1、SQLAlchemy

Flask中最方便用的数据库框架是 flask_sqlalchamy,是对 SQLAlchamy 在 Flask 中的扩展, SQLAlchemy 是一个 Python 数据库工具(ORM,即对象关系映射)。

使用扩展包flask-sqlalchemy来操作数据库(增删改查),通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。可以让我们操作数据库跟操作对象是一样的,非常方便,因为一个表就抽象成一个类,一条数据就抽象成该类的一个对象。

2、安装

pip install flask_sqlalchamy

安装之后,导入到项目中,对应用进行初始化:

from flask_sqlalchamy import SQLAlchamy  # 导入 SQLAlachamy

3、连接数据库

最常用的是mysql,最好的方式是写在configure里面,然后在flask的app主文件中通过app.config.from_object(configure)加载即可。

#配置mysql数据库

DIALECT = 'mysql' # 要用的什么数据库

DRIVER = 'pymysql' # 连接数据库驱动

USERNAME = 'root'

PASSWORD = 'XXXX'

HOST = 'XXXXX'

PORT = '3306'

DATABASE = 'hutong'

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT,DATABASE)

数据库的其他配置

名字备注
SQLALCHEMY_DATABASE_URI用于连接的数据库 URI 。例如:sqlite:tmp/test.dbmysql://username:password@server/db
SQLALCHEMY_BINDS一个映射 binds 到连接 URI 的字典。更多 binds 的信息见用 Binds 操作多个数据库。
SQLALCHEMY_ECHO如果设置为Ture, SQLAlchemy 会记录所有 发给 stderr 的语句,这对调试有用。(打印sql语句)
SQLALCHEMY_RECORD_QUERIES可以用于显式地禁用或启用查询记录。查询记录 在调试或测试模式自动启用。更多信息见get_debug_queries()。
SQLALCHEMY_NATIVE_UNICODE可以用于显式禁用原生 unicode 支持。当使用 不合适的指定无编码的数据库默认值时,这对于 一些数据库适配器是必须的(比如 Ubuntu 上 某些版本的 PostgreSQL )。
SQLALCHEMY_POOL_SIZE数据库连接池的大小。默认是引擎默认值(通常 是 5 )
SQLALCHEMY_POOL_TIMEOUT设定连接池的连接超时时间。默认是 10 。
SQLALCHEMY_POOL_RECYCLE多少秒后自动回收连接。这对 MySQL 是必要的, 它默认移除闲置多于 8 小时的连接。注意如果 使用了 MySQL , Flask-SQLALchemy 自动设定 这个值为 2 小时。

4、构建模型

假设需要构建一张表Article,如下,新建单独一个python文件,放在models目录下,使用Flask-SQLAlchemy创建模型与表的映射:

模型需要继承自db.Model,然后需要映射到表中的属性,必须写成db.Column的数据类型。该类继承自db.Model,__tablename__代表表名,不写的话默认类名的小写字母为表名。然后再是依次每个表字段的定义。

7797988b89c47389a144950433e0d368.png

常用的SQLAlchemy字段类型

类型名python中类型说明
Integerint普通整数,一般是32位
SmallIntegerint取值范围小的整数,一般是16位
BigIntegerint或long不限制精度的整数
Floatfloat浮点数
Numericdecimal.Decimal普通整数,一般是32位
Stringstr变长字符串
Textstr变长字符串,对较长或不限长度的字符串做了优化
Unicodeunicode变长Unicode字符串
UnicodeTextunicode变长Unicode字符串,对较长或不限长度的字符串做了优化
Booleanbool布尔值
Datedatetime.date时间
Timedatetime.datetime日期和时间
LargeBinarystr二进制文件

常用的SQLAlchemy列选项

选项名说明
primary_key如果为True,代表表的主键
unique如果为True,代表这列不允许出现重复的值
index如果为True,为这列创建索引,提高查询效率
nullable如果为True,允许有空值,如果为False,不允许有空值
autoincrement代表的是这个主键为自增长的。
default为这列定义默认值

Flask中使用flask-sqlalchemy时db.create_all()无法创建表

1、导入from flask_demo.models import Role, User  # 导入模型类

2、添加应用上下文

3、with app.app_context():

4、db.create_all()

即可轻松新建数据表,当然数据库需要提前建好。

90ffa8977910cb90bc2db488b567ac13.png

dfcb6151df5006261043c355ff831839.png

分享也是自我的一次提升

阿里面试/岗位交流

免费领取例子脚本和代码

免费PMP考试资料

免费python学习资料

扫一扫,加小T

e8b923d279124b547775b8b63a5834e2.png

专题推荐


● jmeter实时可视化图表化(高级)

● jmeter5.0源码在eclipse正确打开方式

● jmeter+Jenkins性能测试自动化搭建

● jmeter+Jenkins性能测试高级用法(番外篇)

● jmeter的websocket接口性能测试

● jmeter工作实战心法-高级需求(附福利)

● jmeter工作实战心法-必备技能(附赠小技巧)

● jmeter测试mongodb,必会,高级知识

● jmeter tcp脚本的核心知识点理解

● jmeter beanshell脚本如何编写2个例子

● jmeter 如何一步步扩展自己的函数

● jmeter 正则表达式应用

● 新人如何学习性能测试

● 性能测试利剑-微服务的分布式追踪

● python如何和java高效的交互

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

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

相关文章

C#多线程和异步(二)——Task和async/await详解

一、什么是异步同步和异步主要用于修饰方法。当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法;当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调用者…

从头到尾彻底理解傅里叶变换算法(上)

从头到尾彻底理解傅里叶变换算法(上) 前言 第一部分、 DFT 第一章、傅立叶变换的由来 第二章、实数形式离散傅立叶变换(Real DFT) 从头到尾彻底理解傅里叶变换算法、下 第三章、复数 第四章、复数形式离散傅立叶变换 前言&#x…

php sorcket_PHP: Sockets - Manual

socket_accept — Accepts a connection on a socketsocket_addrinfo_bind — Create and bind to a socket from a given addrinfosocket_addrinfo_connect — Create and connect to a socket from a given addrinfosocket_addrinfo_explain — Get information about addrin…

使用ADO.NET的参数集合来有效防止SQL注入漏洞

SQL注入漏洞是个老话题了,在以前做ASP做开发时,就经常需要用字符串的过虑等方式来解决这个问题,但有时候确做的不够彻底,往往让***钻了空子。那么目前在我们.NET中,不管是用WINFORM开发还是用WEBFORM,连接数…

HTML阅读位置,script在HTML文档中位置

从大红书中学习到的HTML文档解释方式:按照HTML文档中顺序依次从上到下解释解释过程中遇到就会异步的下载css然后继续向下解释遇到就会异步的下载图片,然后继续向下解释遇到我们该如何缓解同步执行的script脚本阻塞HTML的解释呢?将给用途&…

[Abp 源码分析]ASP.NET Core 集成

点击上方蓝字关注我们0. 简介整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了。虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本没什么用,还是需要集合 ASP.NET Core 才能发挥它真正的作用。在 Abp.AspN…

python 正则匹配 条件太多怎么办_Python条件正则表达式

我的程序被赋予一个带参数的对象,我需要获取参数的值。 我的程序给出的对象如下所示:Object """{{objectName| parameter1random text| parameter2that may or may not| parameter3contain any letter (well, almost)| parameter4this i…

python分布式爬虫及数据存储_二十一 Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫数据保存...

注意:数据保存的操作都是在pipelines.py文件里操作的将数据保存为json文件spider是一个信号检测# -*- coding: utf-8 -*-# Define your item pipelines here## Dont forget to add your pipeline to the ITEM_PIPELINES setting# See: http://doc.scrapy.org/en/lat…

从头到尾彻底理解傅里叶变换算法(下)

从头到尾彻底理解傅里叶变换算法(上),请看今天第一条。 以下继续: 第三章、复数 复数扩展了我们一般所能理解的数的概念,复数包含了实数和虚数两部分,利用复数的形式可以把由两个变量表示的表达式变成由一个…

ios html 转义字符串,ioS html的转义

标签:iosNSString *htmlString "快乐每一天,还剩365天";NSAttributedString *attributedString [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:{NSDocumentTypeDocumentAttribute…

树莓派安装python3.5_梦见树_周公解梦梦到树是什么意思_做梦梦见树好不好_周公解梦官网...

梦见树是什么意思?做梦梦见树好不好?梦见树有现实的影响和反应,也有梦者的主观想象,请看下面由(周公解梦官网www.zgjm.org)小编帮你整理的梦见树的详细解说吧。树主健康,树笔直挺拔,象征着人的健康。 在梦中…

[Abp 源码分析]后台作业与后台工作者

点击上方蓝字关注我们0. 简介在某些时候我们可能会需要执行后台任务,或者是执行一些周期性的任务。比如说可能每隔 1 个小时要清除某个临时文件夹内的数据,可能用户会要针对某一个用户群来群发一组短信。前面这些就是典型的应用场景,在 Abp 框…

【转】x.509证书在WCF中的应用(CS篇)

【转自】x.509证书在WCF中的应用(CS篇) 为什么要用x.509证书? WCF的服务端和客户端之间&#xff0c;如 果不作任何安全处理(即服务端的<security mode"None">)&#xff0c;则所有传输的消息将以明文方式满天飞&#xff0c;在internet/intranet环境下无疑是很不…

汉字为什么能流传至今_汉字能流传至今,比毛不易还不易,它的同龄字统统都死掉了...

谁是中国历史上最牛逼的发明&#xff1f;造纸术、指南针&#xff1f;火药、活字印刷术&#xff1f;我觉得都不是我心中最牛逼的发明是来&#xff0c;你坐在椅子上闭上眼睛试着想象一下如果从没有过汉字&#xff0c;会怎么样&#xff1f;如果汉字灭绝了&#xff0c;会怎么样&…

从概念到案例:初学者须知的十大机器学习算法

本文先为初学者介绍了必知的十大机器学习&#xff08;ML&#xff09;算法&#xff0c;并且我们通过一些图解和实例生动地解释这些基本机器学习的概念。我们希望本文能为理解机器学习基本算法提供简单易读的入门概念。 机器学习模型 在《哈佛商业评论》发表「数据科学家是 21 世…

api接口怎么用_API接口的使用我这里用java和python都写出来了

实现调用API接口-阿里云大学​edu.aliyun.compythonimport urllib, sys import urllib.request import sslhost https://api01.aliyun.venuscn.com path /ip method GET appcode a661bca174e1458bacaf7a78d489c5f3 querys ip218.18.228.178 bodys {} url host path ?…

未发现android设备,Brother iPrintScan 应用程序上出现错误信息“未发现支持设备”(Android™ 智能手机)。...

相关型号DCP-110C, DCP-115C, DCP-120C, DCP-130C, DCP-145C, DCP-1518, DCP-1519, DCP-155C, DCP-1608, DCP-1619, DCP-165C, DCP-185C, DCP-330C, DCP-350C, DCP-385C, DCP-540CN, DCP-560CN, DCP-7010, DCP-7025, DCP-7030, DCP-7040, DCP-7055, DCP-7057, DCP-7060D, DCP-7…

baseresponse响应类_Java response响应体和文件下载实现原理

通过response 设置响应体&#xff1a;响应体设置文本&#xff1a;PrintWriter getWriter()获得字符流&#xff0c;通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中&#xff0c;随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览 器端。关于设…

测试Live Write的插件

1、文字竖排&#xff1a; 删除&#xff0c;只因首页显示时太占空间。2、酷表情&#xff1a;3、Rhapsody SongI am listening to Sad Songs And Waltzes by Cake . Rhapsody.

手把手教你用7行代码实现微信聊天机器人 -- Python wxpy

环境要求&#xff1a; Windows / Linux / Mac OS Python 3.4-3.6&#xff0c;以及 2.7 版本 wxpy安装 ## 使用国内源安装速度快 pip install -U wxpy -i "https://pypi.doubanio.com/simple/" 实例 让机器人与所有好友聊天 from wxpy import * # 实例化&#xff0c;并…