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

58c52a3957c08702c648f6c33d2837a3.png a1140ebbbf838e9f4a879517c648a60f.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高效的交互

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值